Hilfe bei Komponentenentwicklung - "n" Komponenten zusammenführen
-
Hallo
heißt das, du hasts bereits herausgefunden das du noch einige Eigenschaften von der erstellten Instanz setzen must, und das der Show-Aufruf überflüssig ist?
bis bald
akari
-
Hallo,
mindestens
->Parentsetzen. Und
->Show()ist tatsächlich überflüssig...

Welche Werte sollte ich denn noch setzen, so quasie "Mindestvorgaben" ?
mfg
Frank
-
Hallo
Die Dimensionen sind noch wichtig (Left, Right, Height, Width).
Bzw. die Relativen Positionszuordnungen (Align, Constraints, Anchor).bis bald
akari
-
Hallo,
Dimensioniereung.. genau das richtige Stichwort... Wieso stimmen die Werte für Left, Top, usw. nicht, wenn ich im Konstruktor der Abgeleiteten Klasse drauf zurückgreife?
__fastcall TAresAdvDBEdit::TAresAdvDBEdit(TComponent* Owner) : TAresAdvEdit(Owner) { SearchBtn = new TAresBitBtn(this); SearchBtn->Parent = this; SearchBtn->Left = this->Left; this->Left = this->Left + this->Height; SearchBtn->Top = this->Top; SearchBtn->Width = this->Height; SearchBtn->Height = this->Height; SearchBtn->Caption = "+"; }-> Werte: Left = 0, Top = 0, Height = 19
Diese Werte sehen mir nach default-Werten aus. An welcher Stelle "lädt" denn der BCB die per Positionierung auf der Form festgelegten Koordinaten für eine Komponente?

Frank
-
Hallo Forum,
keiner eine Idee? Ich hab's jetzt ein paar mal hin und her probiert, aber ich bekomme nie die "realen" Koordinaten der Komponente...
Left/Top sind immer Null. Direktes Zuweisen von Werten geht aber (also z.B. Left = 100, Top = 100). Dann erscheint die Komponente auch da.
Gibts keine Möglichkeit die "Form"-Koordinaten einer Komponente innerhalb dieser Komponente zu ermitteln? Müßte doch möglich sein....

(zur Erklärung: möchte links neben einem Edit-Feld einen kleinen Button anzeigen, und das Edit-Feld um die Breite des Buttons nach rechts verschieben)
Frank
-
Hallo
SearchBtn->Parent = this;
SearchBtn->Left = this->Left;Schon mal falsch. Da SearchBtn nun unter this geordnet ist, Basiert die Zuordnung der Position relativ zu this, nicht mehr zu dem Form.
Das bedeutet der Ursprung [0,0] ist für SearchBtn nicht mehr die obere linke Ecke des Forms, sondern die obere linke Ecke des Parent-Controls.bis bald
akari
-
Hallo akari,
hm, ok, soweit verstanden, aber.... warum ist dann
this->left = 0 // warum null?Dort müßte doch dann die Links-Position der Parent-Komponente relativ zu dessen Parent (= Form) stehen, oder? Und damit müßte ich doch per
this->left = this->left + SearchBtn->widthdie Komponente um die Breite des Buttons nach rechts verschieben??
mfg
Frank
-
Hallo
Genau jetzt kommst du mit deiner Vererbung an den toten Punkt.
Der Searchbutton ist dem Edit untergeordnet, das heißt er muß sich visuell innerhalb des Edits befinden. Du kannst so nicht mehr das Edit neben den Button schieben!
Genau deswegen brauchst du eine Ableitung von TControl o.ä., wo Button und Edit auf dem gleichen Parent-Level stehen und deshalb auch visuell nebeneinander stehen können.bis bald
akari
-
Hallo akari,
Aaaarrrgh....Na super... Und nu? Hilfeee.....

Meine Anwendung baut quasie darauf auf, "direkt" in Edit-felder zu schreiben, bzw aus ihnen zu lesen. Wenn ich dich also richtig verstehe, müßte ich mir ein Konstrukt aufbauen, der sich "nach außen" so verhält wie ein Edit-feld, aber "nach innen" irgendwas anderes ist, innerhalb dem Edit und Btn auf "gleicher ebene" existieren....
OMG
Und meine Anwendung hat ja nur "ein paar" zeilen quähltext....
Hast du vieleicht einen Tipp für mich, wie ich das mit wenig "um-die-ecke-programmieren" lösen kann?
Frank
-
Hallo
Als Alternative bietet sich noch an, nur von TAresBitBtn abzuleiten. Dann brauchst du der neuen Klasse nur eine Eigenschaft names Edit vom Typ TAresAdvDBEdit und eine Setter-Methode zu geben. In der Setter-Methode setzt du neben der interen Variable noch die Position passend zu dem bereits existierenden und positioniertem Edit.
Als Beispiel kannst du dir TUpDown und desen Eigenschaft Associate anschauen.
Das hat aber nachteil, das jede nachträgliche Positionsveränderung des Edits nicht automatisch eine Veränderung bei dem Button auslöst.bis bald
akari