![]() |
Re: größe der Komponente automatisch anpassen
Du kannt ein TLabel nicht als Parent verwenden, weil es nicht von TWinControl abstammt.
Erstelle entweder eine komplett neue Kompo, abgeleitet von TWinControl oder verwende TStaticText als Vorfahr. |
Re: größe der Komponente automatisch anpassen
Zitat:
TStaticText nimmt dir natürlich den ganzen Text-Kram ab. Leite dann aber lieber von TCustomStaticText ab. Gruß oki |
Re: größe der Komponente automatisch anpassen
Liste der Anhänge anzeigen (Anzahl: 1)
@oki ja hab schon alles umgestellt auf TWinControl, kein Thema. Hänge mal den aktuellen Status der Komponente an. Könnt ja mal Anregungen geben, wen es interessiert, bräuchte mal ein kleines Brainstorming, welche der normalen Propertys, außer alles was mit Fond ect. zusammenhängt, sinnvoll wäre wieder zu implizieren.
Edit: Datei angehängt |
Re: größe der Komponente automatisch anpassen
Joop, geht doch gut vorwärts. Die Methode TTWinControlAnpassung würde ich ändern in ChangeEmbeddedEdit oder UpdateEditSize oder so. Ist zwar völlig wurscht, aber das Auge isst mit. Den alten Wert brauchst des Label brauchst du dir so eigentlich nicht merken. Der Wert als Solches reicht Vollständig. Verpass deinem neuen Label die Eigenschaft Text. Da steht dein einzutragender Wert drin. Beim Edit fängst du das Esc ab. Damit kannst du dann das Edit verstecken und änderst FText einfach nicht. Dan musst du aber sicher wieder ein Flag definieren, dass du setzt bevor du das Edit versteckst um es vom normalen "Lost Focus" zu unterscheiden wo ja der Wert geändert werden soll.
Eigenschaften für published ? ... nehm doch mal alle. Kenne eingentlich keine unnützen da. Gruß oki |
Re: größe der Komponente automatisch anpassen
Zitat:
- Enabled - Text - Font(hier als Unterpunkte Color, Height, Name, Style) - Visible - eventuell Readonly (Wobei ich hier noch überlege, dann könnte man gleich einfach ein Label nehmen) - Length - MaxLength Jetzt zu dem etwas schwierigeren Sachen, die ich auch teilweise noch nicht verstanden habe. Zitat:
Delphi-Quellcode:
Sollte ich, wenn ich die Prozedure so umschreibe immer noch ein Flag setzen? hab das mal so getestet und scheint erstmal wunderbar zu funktionieren.
procedure TLabEdit.FEdKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin // Die Änderung hier an dieser Prozedur sehen wie folgt aus: OnChange wird nur // aktiviert, wenn eine Eingabe getätigt wurde, die verschieden von der vorherigen // ist. // Bei Esc wird alles wieder zurückgesetzt und das OnChangeEvent wird nicht aktiviert. if (Key = 13) then begin FEdEingabe.Visible := false; FLblAnzeige.Visible := true; FLblAnzeige.Caption := FEdEingabe.Text; if assigned(FOnChange) then FOnchange; ChangeEmbeddedEdit; end; if (key = 27) then begin FEdEingabe.Visible := false; FLblAnzeige.Visible := true; FEdEingabe.Text := sTextWert; ChangeEmbeddedEdit; end; end; Setter und Getter schreibe ich gerade direkt in die Komponente. Denke einen zusätzlichen TPresistent zu schreiben wäre aufwendiger. Vorallem wüsste ich da nur schwer, wie ich die Setter und Getter schreiben müsste. So erstelle ich mir eine Variable und dazu jeweils einen Setter und Getter plus einer Property in Published wo ich die Eigenschaft frei gebe. |
Re: größe der Komponente automatisch anpassen
Hi,
erst mal sorry für den Verhaspler Zitat:
Ich würde auch noch das Exit des Edit abfangen. Das wird aus ausgelöst, wenn das Edit den Fokus verliert. z.B. man clickt neben das Edit wähend es aktiv ist. Da kannst du dann auch das Eingegebene übernehmen wie bei deinem "Enter" in KeyDown. Letztes Thema; ich sehe bis jetzt immer noch keinen Ansatz wo du einen Wrapper brauchst. Mein Kommaentar in den vorherigen Posts zu diesem Thema war eher eine Vermutung incl. Erläuterung zu deiner Umschreibung mit TPersistent. Das du einen solchen brauchst wollte ich damit nicht ausdrücken. Wie gesagt, da du alle wichtigen Eigenschaften von deinem Label an das Edit übergeben kannst (Font, Left, Top ....) musst du eigentlich keine Eigenschaften des Edit veröffentlichen. gruß oki [edit] diverse Fehler wieder eingesammelt [/edit] |
Re: größe der Komponente automatisch anpassen
Hab nochmal versucht diese Funktion etwas zu verbessern:
Delphi-Quellcode:
Sieht jetzt wie folgt aus und scheint auch seine Schuldigkeit zu tun. Mir ist zumindest kein Fehler aufgefallen:
procedure TLabEdit.FEdKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin // Die Änderung hier an dieser Prozedur sehen wie folgt aus: OnChange wird nur // aktiviert, wenn eine Eingabe getätigt wurde, die verschieden von der vorherigen // ist. // Bei Esc wird alles wieder zurückgesetzt und das OnChangeEvent wird nicht aktiviert. if (Key = 13) then begin FEdEingabe.Visible := false; FLblAnzeige.Visible := true; FLblAnzeige.Caption := FEdEingabe.Text; if assigned(FOnChange) then FOnchange; ChangeEmbeddedEdit; end; if (key = 27) then begin FEdEingabe.Visible := false; FLblAnzeige.Visible := true; FEdEingabe.Text := sTextWert; ChangeEmbeddedEdit; end; end;
Delphi-Quellcode:
Sieht so schöner aus.
if key in [13, 27] then
begin FEdEingabe.Visible := false; FLblAnzeige.Visible := true; case key of 13: begin FsTextWert := FEdEingabe.Text; FLblAnzeige.Caption := FEdEingabe.Text; if assigned(FOnChange) then FOnchange; end; 27: begin FEdEingabe.Text := FsTextWert; end; end; end else begin inherited; FLblAnzeige.Caption := FEdEingabe.Text; ChangeEmbeddedEdit; end; Mache gleichmal einen extra Threat auf für das Problem, wie erkenne ich, dass außerhalb meiner Komponente geklickt wurde. |
Re: größe der Komponente automatisch anpassen
Schöner ist Ansichtssache :lol:
Poste hier mal den Link zu deinem neuen Thread, dann brauch ich nicht suchen. Gruß oki |
Re: größe der Komponente automatisch anpassen
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:41 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