Hallo,
mir ist sehr wohl klar, das ich mit der Anweisung
Edit1.Parent:=CheckListBox;
die erstellte Komponente auf der Checklistbox sichtbar mache.
Trotzdem bleibe ich dabei, dass es dadurch auch die Eigenschaft der Checklistbox irgendwie "erbt".
mit folgender Anweisung:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
Var DrawRect: TRect;
begin {== Checklistbox erzeugen ===========================}
CheckListBox:=TCheckListBox.Create(Form1);
CheckListBox.Parent:=(Form1);
CheckListBox.Items.Add('Zeile 1');
CheckListBox.Items.Add('Zeile 2');
CheckListBox.Items.Add('Zeile 3');
CheckListBox.Font.Size:=10; // diesen Parameter erhält oder erbt auch Edit1 !!
{== Editfeld erzeugen und auf Checkbox legen =======}
Edit1:=TEdit.Create(Form1);
Edit1.Parent:=CheckListBox;
{== Ermitteln der Edit.Höhe über Größe der CheckListbox ==}
DrawRect:=CheckListBox.ItemRect(0);
Edit1.Height:=DrawRect.Bottom-DrawRect.Top+2;
Edit1.Visible:=false;
end;
Fragen:
1. Die Zuweisung für Edit.Height wird hier völlig ignoriert !
2. Erhält die Edit-Komponente z.B. genau die Schriftgöße, die Checklistbox zugewiesen bekommt. Warum, wenn nicht geerbt ?
3. schreibt man z.B. für das Ereignis Doppelklick folgendes:
Delphi-Quellcode:
//Variante 1:
procedure TForm1.CheckListBoxDblClick(Sender: TObject);
Var DrawRect: TRect;
begin DrawRect:=CheckListBox.ItemRect(CheckListBox.ItemIndex);
Edit1.Text:=CheckListBox.Items.Strings[CheckListBox.ItemIndex];
Edit1.Top:=DrawRect.Top;
Edit1.Visible:=true;
end;
wird die im OnCreate-Ereignis eingestelle Größe völlig ignoriert !
schreibt man aber für das Ereignis Doppelklick folgendes:
Delphi-Quellcode:
//Variante 2:
procedure TForm1.CheckListBoxDblClick(Sender: TObject);
Var DrawRect: TRect;
begin DrawRect:=CheckListBox.ItemRect(CheckListBox.ItemIndex);
Edit1.Text:=CheckListBox.Items.Strings[CheckListBox.ItemIndex];
Edit1.Top:=DrawRect.Top;
Edit1.Height:=DrawRect.Bottom-DrawRect.Top+2; // <== erneute Zuweisung der Höhe
Edit1.Visible:=true;
end;
funktioniert es immer- aber erst - ab dem zweiten Aufruf korrekt.
Vielleicht habt hier darauf dann auch eine Antwort ? :roll:
Gruß Gerd