for counter := 0 to Form.Componentcount do begin
if (components[counter] is TLED) then begin
LED[Component[counter].tag]:= TLED(components[counter]);
end
end;
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½ Π΄Π²ΡΡ ΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², ΡΠΎ Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π΄ΡΡΠ³Π°Ρ Ρ ΠΈΡΡΠΎΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ Hint ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ².
ΠΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈ ΠΈΡ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ² Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ½ΠΊΡΠΈΡ DuplicateComponents, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΡΡ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΡΠ±ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈ ΠΈΡ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ² Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΅ΠΉΡΡΠ²ΠΈΡ Π΅Π΅ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ/Π²ΡΡΠ°Π²ΠΊΠΈ (copy/paste) Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ΅Ρ ΠΆΠ΅ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ, Π²Π»Π°Π΄Π΅Π»ΡΡΠ΅Π² (Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ²) ΠΈ ΠΈΠΌΠ΅Π½Π° (Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΠΈΡ ΡΡ), ΡΡΠΎ ΠΈ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Ρ. Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π΅ΡΡΡ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ Π±Π°Π³ΠΎΠ², Π½ΠΎ Ρ ΠΏΠΎΠΊΠ° ΠΈΡ Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ». ΠΡΠΈΠ±ΠΊΠΈ ΠΈ Π½Π΅Π΄ΠΎΡΠ΅ΡΡ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΈΠ·-Π·Π° ΡΠ΅Π΄ΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅, Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ΅ΠΌ, ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ, ΡΡΠΎΠ»ΠΊΠ½ΡΠ²ΡΠΈΠΌΠΈΡΡ Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ.
ΠΠ°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π²Π΅ΡΡΠΌΠ° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π² ΡΠ»ΡΡΠ°Π΅ Π½Π°Π»ΠΈΡΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ Π½Π° ΡΠΎΡΠΌΠ΅ Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠ° ΠΏΡΠΎΡΡΠ° Π΄ΠΎ Π±Π΅Π·ΠΎΠ±ΡΠ°Π·ΠΈΡ: ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΠ΅ Π½Π° TPanel ΠΈΠ»ΠΈ Π½Π° Π΄ΡΡΠ³ΠΎΠΌ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅: "newpanel := DuplicateComponents(designedpanel)".
uses SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, IniFiles, TypInfo, Debug;
type TUniqueReader = Class(TReader)
LastRead: TComponent;
procedure ComponentRead(Component: TComponent);
procedure SetNameUnique(Reader: TReader; Component: TComponent; var Name: string);
end;
implementation
procedure TUniqueReader.ComponentRead(Component: TComponent);
begin
LastRead:= Component;
end;
procedure TUniqueReader.SetNameUnique( // ΠΠ°Π΄Π°Π΅ΠΌ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ ΡΡΠΈΡΡΠ²Π°Π΅ΠΌΠΎΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, "Panel2", Π΅ΡΠ»ΠΈ "Panel1" ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ
Reader: TReader; Component: TComponent; // Π‘ΡΠΈΡΡΠ²Π°Π΅ΠΌΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ
var Name: string // ΠΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ
);
var
i: Integer;
tempname: string;
begin
i:= 0;
tempname:= Name;
while Component.Owner.FindComponent(Name) <> nil do begin
Inc(i);
Name:= Format('%s%d', [tempname, i]);
end;
end;
function DuplicateComponents(
AComponent: TComponent // ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ
): TComponent; // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°
procedure RegisterComponentClasses(AComponent: TComponent);
var i : integer;
begin
RegisterClass(TPersistentClass(AComponent.ClassType));
if AComponent is TWinControl then
if TWinControl(AComponent).ControlCount > 0 then
for i:= 0 to (TWinControl(AComponent).ControlCount-1) do RegisterComponentClasses(TWinControl(AComponent).Controls[i]);
end;
var
Stream: TMemoryStream;
UniqueReader: TUniqueReader;
Writer: TWriter;
begin
result:= nil;
UniqueReader:= nil;
Writer:= nil;
try
Stream:= TMemoryStream.Create;
RegisterComponentClasses(AComponent);
try
Write:= TWriter.Create(Stream, 4096);
Writer.Root:= AComponent.Owner;
Writer.WriteSignature;
Writer.WriteComponent(AComponent);
Writer.WriteListEnd;
finally
Writer.Free;
end;
Stream.Position:= 0;
try
UniqueReader:= TUniqueReader.Create(Stream, 4096); // ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠΎΡΠΎΠΊ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΠΈΠΉ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ
UniqueReader.OnSetName:= UniqueReader.SetNameUnique;
UniqueReader.LastRead:= nil;
if AComponent is TWinControl then UniqueReader.ReadComponents( // ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈ ΡΡΠ±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ
TWinControl(AComponent).Owner, TWinControl(AComponent).Parent, UniqueReader.ComponentRead
)
else UniqueReader.ReadComponents( // ΡΠΈΡΠ°Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ
AComponent.Owner, nil, UniqueReader.ComponentRead
);
result:= UniqueReader.LastRead;
finally
UniqueReader.Free;
end;
finally
Stream.Free;
end;
end;
Π‘ΠΎΠ±ΡΡΠΈΡ
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΎΠ±ΡΡΠΈΡ Π² Memo:
memo.onchange:= memo1Change;
procedure TForm1.Memo1Change(Sender: TObject);
begin
panel1.caption:= 'Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π±ΡΠ»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ';
end;
ΠΠ°Π΄Π΅ΡΠΆΠΊΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
ΠΠ°Π΄Π΅ΡΠΆΠΊΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ OnChange (Delphi 2)
Π ΡΠ»ΡΡΠ°Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ComboBox, Π²Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΡΠ°Π΄Π½ΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΡ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΡΡ ΠΏΡΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠ±ΡΡΠΈΡ OnChange.
Π’Π°ΠΊ ΠΊΠ°ΠΊ "ΡΠ°Π±ΠΎΡΠ° ΠΊΠΈΠΏΠΈΡ", Ρ Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΎΡΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ItemIndex Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ·Π΄Π½Π΅Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 100 ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄ ΡΠΏΡΡΡΡ. ΠΠΎΡ ΡΡΠΎ Ρ ΠΌΠ΅Π½Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ. Π‘ΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π² Delphi2, ΠΊΠΎΠ΄ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈ Π΄Π»Ρ Delphi 1. ΠΠ° ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΎΡΠΌΠ΅ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ComboBox ΠΈ Label. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ·ΠΎΠ² Application.ProcessMessages, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ PC, ΠΊΠΎΠ³Π΄Π° ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΡΠΎΡΠΌΡ ΠΏΡΡΡΠ°.
unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
const
// ΠΡΠΎΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΠ°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
PM_COMBOCHANGE = WM_USER + 8001;
// 500 ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄
CWantedDelay = 500;
type TForm1 = class(TForm)
ComboBox1: TComboBox;
Label1: TLabel;
procedure ComboBox1Change(Sender: TObject);
private
procedure PMComboChange(var message : TMessage); message PM_COMBOCHANGE;
public
end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
PostMessage(Handle, PM_COMBOCHANGE, 0, 0);
end;
procedure TForm1.PMComboChange(var message : TMessage);
const
InProc: BOOLEAN = FALSE;
StartTick: LONGINT = 0;
begin
if InProc then begin
// ΠΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ ΡΡΠ°ΡΡΠΎΠ²ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ
StartTick:= GetTickCount;
end else begin
// ΠΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΡΠΈΠΊΠ»Π°
InProc:= TRUE;
// ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ°ΡΡΠΎΠ²ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
StartTick:= GetTickCount;
// ΠΠΆΠΈΠ΄Π°Π΅ΠΌ ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠ°ΡΡΠΎΠ²ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
// ΠΠΎΠΊΠ° ΡΡΠ°ΡΡΠΎΠ²ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π΅ ΠΈΡΡΠ΅ΡΠΏΠ°Π»ΠΎΡΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
while GetTickCount - StartTick < CWantedDelay do Application.ProcessMessages;
// ΠΠ»Π»ΡΡΡΡΠ°ΡΠΈΠ²Π½ΠΎΠ΅ ΠΏΡΠΈΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ°, Π·Π°Π΄Π°ΡΡΠ΅Π΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΡΠΎΠ±ΡΡΠΈΡ OnChange
Label1.Caption:= IntToStr(StrToIntDef(Label1.Caption, 0) + 1);
// ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΊΠ»Π°
InProc:= FALSE;
end;
end;
end.
ΠΠΈΠ³ΡΠ°ΡΠΈΡ
Delphi3
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ LoadStr
ΠΠΎΠ·Π±ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈΠ· CONSTS.PAS (ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π»ΠΎΡΡ Π² Delphi 1 ΠΈ Delphi 2) Π² Delphi3 Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
raise SomeException.Create(LoadStr(SInsertLineError));
Π² Delphi3 ΡΠ΅ΠΏΠ΅ΡΡ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π― ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
raise SomeException.Create({$IFNDEF VER100}LoadStr{$ENDIF}(SInsertLineError));
Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ LoadStr "ΠΏΠΎ Π½ΡΠΆΠ΄Π΅", ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅ΠΉ ΠΏΠΎΡΠ΅ΠΌΡ-ΡΠΎ Π΄Π»Ρ ΡΡΠΈΡ ΡΠ΅Π»Π΅ΠΉ Π² Delphi 3.
ΠΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ Π²ΡΠ·Π²Π°ΡΡ Π΄Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π² Delphi 3 (Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ° ΠΎΡΠΈΠ±ΠΊΠΈ, Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ CONSTS(.PAS/.DCU)), ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°: "Incompatible types: 'Integer' and 'String'"
ΠΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΠΎΠ΄Ρ Ρ Π½Π΅ Π½Π°ΡΠ΅Π» Π½ΠΈ Π² ΡΠΈΡΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π½ΠΈ Π½Π° Borland-ΡΠ΅ΡΠ²Π΅ΡΠ΅.
ΠΡΠΈΠ±ΠΊΠΈ
Delphi2
ΠΡΠΈΠ±ΠΊΠ° Π² ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ "Getting Started" Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ 42
Π― ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ» Delphi 2.0, Π²ΡΠ΅ ΠΏΡΠΎΡΠ»ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΈ Π±Π΅Π· Π΅Π΄ΠΈΠ½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ, Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΈ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΈ.
ΠΠ°Π»Π΅Π΅ Π² Delphi 2.0 Ρ ΠΎΡΠΊΡΡΠ²Π°Ρ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ "Getting Started" (ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ°). Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΈΡΠ΅ 42, "Adding a display grid" (Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ ), Π΄ΠΎΠ±Π°Π²Π»ΡΡ Π½Π° ΡΠΎΡΠΌΡ DBGrid, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ DataSource Π² GDSDataModule.CustomerSource, Π½ΠΎ Π΄Π°Π½Π½ΡΠ΅ Π² DBGrid Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ, Ρ ΠΎΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ 42 Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ "Immediately, the data is displayed in the DBGrid" (Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π±ΡΠ΄ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½Ρ Π² DBGrid).
ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ.
ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΈΠ· ΠΌΠ΅Π½Ρ Delphi "Database Explorer" Π²ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΠΈΡ Π΄Π°Π½Π½ΡΠ΅ Π²ΠΈΠ΄ΡΡΡΡ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
Π’Π°Π±Π»ΠΈΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΊΡΡΡΡ. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Active ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π’able Π² True.