Mały problem z programikiem.

0

Witam.
Czy możecie przeanalizować ten kodzik i poprawić to to co jest nie tak przy tworzeniu Labeli na wcześniej utworzoneych Panelach. Tylko tu jest błąd Zapisywanie do rejestru jest poprawne.

Button1 służy do zapisu, a Button2 do Odczytu i utworzenia Paneli z Labelami.

THX

procedure TForm1.Button1Click(Sender: TObject);
var
Reg : TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.OpenKey( 'Software\Kompy\Komp1' ,True);
Reg.OpenKey('Panelek', True);
Reg.WriteString('Name','Panelek1');
Reg.WriteInteger('Left',30);
Reg.WriteInteger('Top',50);
Reg.CloseKey;
Reg.OpenKey( 'Software\Kompy\Komp1' ,True);
Reg.OpenKey('Labelek',True);
Reg.WriteString('Name','Labelek1');
Reg.WriteInteger('Left',10);
Reg.WriteInteger('Top',10);
Reg.WriteString('Caption','Mama');
Reg.CloseKey;
Reg.OpenKey( 'Software\Kompy\Komp2' ,True);
Reg.OpenKey('Panelek', True);
Reg.WriteString('Name','Panelek2');
Reg.WriteInteger('Left',100);
Reg.WriteInteger('Top',100);
Reg.CloseKey;
Reg.OpenKey( 'Software\Kompy\Komp2' ,True);
Reg.OpenKey('Labelek',True);
Reg.WriteString('Name','Labelek2');
Reg.WriteInteger('Left',30);
Reg.WriteInteger('Top',30);
Reg.WriteString('Caption','Tata');
Reg.CloseKey;
finally
Reg.Free;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
Panelek : TPanel;
Labelek : TLabel;
Reg : TRegistry;
i : Integer;
begin
Reg := TRegistry.Create;
try
for i := 1 to 2 do
begin
Reg.OpenKey( 'Software\Kompy\Komp'+IntToStr(i)+'\Panelek' ,False);
Panelek := TPanel.Create(Form1);
with Panelek do
begin
Parent := Form1;
Caption := ; Name := Reg.ReadString('Name'); Left := Reg.ReadInteger('Left'); Top := Reg.ReadInteger('Top'); end; Reg.OpenKey( 'Software\\Kompy\\Komp'+IntToStr(i)+'\\Labelek' ,False); Labelek := TLabel.Create(Panelek); with Panelek do begin Parent := Panelek; // &lt&lt&lt====== Cos tutaj jest nie tak Caption := ;
Name := Reg.ReadString('Name');
Left := Reg.ReadInteger('Left');
Top := Reg.ReadInteger('Top');
end;
Reg.CloseKey;
end;
finally
Reg.Free;
end;
end;

0

with Panelek do
begin
Parent := Panelek; // &lt&lt&lt====== Cos tutaj jest nie tak
Caption := '';

A nie powinno byc:
with Labelek do ???--Pawel {Delphi6 }

Po pierwsze: naciśnij F1

0

Zgadza się {wstyd} {wstyd} Sorry za błąd.
Ale to itak nic nie zmienia.
Teraz nie wyskakuje żaden błąd ale nadal nie tworzy Labelków na Panelkach.

HELP {glowa} {glowa}

0

To już na pewno działa:

procedure TForm1.Button2Click(Sender: TObject);
var
Panelek : TPanel;
Labelek : TLabel;
Reg : TRegistry;
i : Integer;
begin
Reg := TRegistry.Create;
try
for i := 1 to 2 do
begin
Panelek := TPanel.Create(Form1);
with Panelek do
begin
Parent := Form1;
Caption := ; Labelek := TLabel.Create(Form1); Reg.OpenKey( 'Software\\Kompy\\Komp'+IntToStr(i)+'\\Labelek' ,False); with Labelek do begin Parent := Panelek; Caption := ;
Name := Reg.ReadString('Name')+'1';
Left := Reg.ReadInteger('Left');
Top := Reg.ReadInteger('Top');
end;
Reg.OpenKey( 'Software\Kompy\Komp'+IntToStr(i)+'\Panelek' ,False);
Name := Reg.ReadString('Name');
Left := Reg.ReadInteger('Left');
Top := Reg.ReadInteger('Top');
end;
Reg.CloseKey;
end;
finally
Reg.Free;
end;
end;

Nie możesz zmieniać nazwy zanim nie utworzysz Labelka. Jeżeli zmienisz nazwę to w parent także musisz podać inną.--Jest jeszcze jeden błąd ... :)

--------------Blok reklamowy :) -----
kanał: #4programmers.net lub #4programmers
w sieci POLNet
serwer np.: warszawa.ircnet.pl

0

THX

1 użytkowników online, w tym zalogowanych: 0, gości: 1