Einzelnen Beitrag anzeigen

delphin

Registriert seit: 21. Aug 2003
Ort: Chemnitz
29 Beiträge
 
Delphi 7 Professional
 
#7

Re: Vererbung bestimmter Eigenschaften deaktiviern

  Alt 19. Jan 2007, 20:36
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
  Mit Zitat antworten Zitat