![]() |
Vererbung bestimmter Eigenschaften deaktiviern
Hallo,
ich habe von einem CheckListfeld eine Edit Feld zur Eingabe wiefolgt abgeleitet:
Delphi-Quellcode:
Nun erbt Edit erstmal alle Eigenschaften von meiner Checklistbox. Soweit logisch. Wenn ich nun mein Editfeld in Höhe und Schriftgröße wie folgt ändern möchte:Edit1:=TEdit.Create(nil) Edit1.Parent:=CheckListBox;
Delphi-Quellcode:
dann bleibt das ohne Auswirkung!? :wall:
Edit1.Height:=DrawRect.Bottom-DrawRect.Top+1;
Wie kann ich die Vererbung für diese Eigenschaft abstellen ? |
Re: Vererbung bestimmter Eigenschaften deaktiviern
mach sie privat.
|
Re: Vererbung bestimmter Eigenschaften deaktiviern
Wie meinst Du das mit:
Zitat:
Delphi-Quellcode:
bringt das keine Punkt. Die Zuweisung von Edit.Height:=xy hat keine Auswirkung. Die Höhe bleibt wie sie geerbt wurde!
TForm1 = class(TForm)
// Edit1: TEdit; CheckListBox: TCheckListBox; procedure FormCreate(Sender: TObject); procedure CheckListBoxDblClick(Sender: TObject); procedure CheckListBoxExit(Sender: TObject); private { Private-Deklarationen } Edit1: TEdit; public { Public-Deklarationen } end; Gerd |
Re: Vererbung bestimmter Eigenschaften deaktiviern
Was ist DrawRect ?
Wenn ich die Höhe eines Edit ändere, so funktioniert das ohne Probleme ! |
Re: Vererbung bestimmter Eigenschaften deaktiviern
Zitat:
[edit=Christian Seehase]Doppelpost gelöscht. Mfg, Christian Seehase[/edit] |
Re: Vererbung bestimmter Eigenschaften deaktiviern
So ist es. Die OOP-Konzepte, insbesondere Vererbung scheinen nicht bekannt zu sein. Vererbt wird so jedenfalls nichts.
|
Re: Vererbung bestimmter Eigenschaften deaktiviern
Hallo,
mir ist sehr wohl klar, das ich mit der Anweisung
Delphi-Quellcode:
die erstellte Komponente auf der Checklistbox sichtbar mache.
Edit1.Parent:=CheckListBox;
Trotzdem bleibe ich dabei, dass es dadurch auch die Eigenschaft der Checklistbox irgendwie "erbt". mit folgender Anweisung:
Delphi-Quellcode:
Fragen:
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; 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:
wird die im OnCreate-Ereignis eingestelle Größe völlig ignoriert !
//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; schreibt man aber für das Ereignis Doppelklick folgendes:
Delphi-Quellcode:
funktioniert es immer- aber erst - ab dem zweiten Aufruf korrekt.
//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; Vielleicht habt hier darauf dann auch eine Antwort ? :roll: Gruß Gerd |
Re: Vererbung bestimmter Eigenschaften deaktiviern
Zitat:
Zitat:
Gruß |
Re: Vererbung bestimmter Eigenschaften deaktiviern
@delphin
Die Vokabel "erben" ist in Delphi ein absolut zentraler Begriff! Einer der ausdrückt, dass bei einer Komponentenableitung die Eigenschaften einer Ursprungsklasse komplett auf die dabei neu entstehende Klasse übergehen. Was Du bezüglich einer Zuweisung der Parent-Property meinst, ist aber eher nur ein damit eventuell auch noch gleichzeitiges Mitzuweisen einiger weniger anderer Properties, wie Color o. Font. Und zwar auch wieder abhängig davon, ob z.B. im OI solche weiteren (boolschen) Properties wie ParentColor o. ParentFont ein TRUE oder FALSE geladen haben. |
Re: Vererbung bestimmter Eigenschaften deaktiviern
Nene, so wird das nichts. Du musst dir mal zumindest über die Nomenklatur Klarheit verschaffen. Der Begriff "Vererbung" macht doch nur Sinn, wenn es einen Erben gibt. Und der muss einen Vorfahren haben, sonst kann er ja nichts erben. :P Inwiefern trifft das jetzt auf ein Edit und eine Checkbox zu ? :shock: Also : was soll denn da überhaupt vererbt werden ?
Irgendwo gibt es wohl schon eine gemeinsame Wurzel, aber wo ? Bei Adam und Eva vielleicht ? Um bei Edit/Checkbox zu bleiben : das zeichnen der Umrandung, ja das wäre eine Gemeinsamkeit. Aber das ist doch eine sehr schwache Grundlage, um etwas zu vererben. Typischer Fehler auch in der Komponentenentwicklung : anstatt sich einen guten Vorfahren rauszusuchen und möglichst viel zu verwenden (von dem zu erben) wird das Rad komplett neu erfunden und man fängt bei 0 an, also mit TComponent usw. Ist hier jeden Tag nachzulesen. :mrgreen: Was Du willst ist das Kopieren/Setzen von Eigenschaften von irgendwo kopiert. Da wird nichts vererbt, sondern es werden lediglich Werte übernommen. Wegen roter Kasten : Zitat:
Ich bleibe dabei : so wird das nichts. :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz