![]() |
Zeiger auf Inhalt von TEdit TComboBox
Gibt es eine Möglichkeit einen Zeiger auf den Inhalt von einem Eingabefeld zu setzten? Sodass ich diesen nutzen kann um an den Inhalt zu kommen.
Delphi-Quellcode:
Edit1.Text := 'Hallo';
Zeiger := Edit1.Text; Edit1.Text := 'Hi'; ShowMessage(Zeiger); // ==> 'Hi' |
Re: Zeiger auf Inhalt von TEdit TComboBox
Einen Zeiger im Sinne eines Pointers gibt es nicht da der Buffer intern per Api-Funktion abgerufen wird. Aber wenn ich mich nicht irre haben beide Komponenten den gleichen vorfahren so das du über einen Cast auf diesen die Eingeschaft Text abfragen kannst.
|
Re: Zeiger auf Inhalt von TEdit TComboBox
Hmm... schade wollte damit gerade das Typecast"en" vermeiden, denn Memo und Fremdkomponenten kommen noch dazu.
|
Re: Zeiger auf Inhalt von TEdit TComboBox
hat das Memo nicht auch als gemeinsamen Vorfahren das TCustomEdit?
Zudem müsstest du die Pointer auf den Text ja auch vorher ermitteln. Entsprechend kannst du auch einfach eine Funktion machen die ein TControl übergeben bekommt und in der Funktion ermittelst du dann was für ein Typ es ist und reagierst entsprechend darauf. |
Re: Zeiger auf Inhalt von TEdit TComboBox
Du versuchst, den Sinn der Kapselung zu umgehen. Das kann *nur* mit Tricks funktionieren.
|
Re: Zeiger auf Inhalt von TEdit TComboBox
Das mit einer Funktion dafür ist klasse danke ;)
Wenn jemand vor dem gleichen Problem steht:
Delphi-Quellcode:
Aufruf:
FUNCTION GetContentFromTControl(AControl:TControl):String;
BEGIN IF (AControl IS TLabel) THEN result := TLabel(AControl).Caption; IF (AControl IS TEdit) THEN result := TEdit(AControl).Text; IF (AControl IS TComboBox) THEN result := TComboBox(AControl).Text; IF (AControl IS TMemo) THEN result := TMemo(AControl).Lines.Text; {IF (AControl IS TRzButtonEdit) THEN result := TRzButtonEdit(AControl).Text;} END;
Delphi-Quellcode:
ShowMessage(GetContentFromTControl(Edit1));
|
Re: Zeiger auf Inhalt von TEdit TComboBox
Das das bei anderen Komponenten, insbesondere von Drittanbietern nicht funktioniert, sollte klar sein.
|
Re: Zeiger auf Inhalt von TEdit TComboBox
Man kann auch über RTTI ein String-Property mit einem bestimmten Namen auslesen.
Das funktioniert dann für alle Komponenten. Ich finde nur der bescheidenen D2007 Hilfe gerade die Funktion nicht. Aber im Prinzip so:
Delphi-Quellcode:
if IsPublishedProp(control, 'Text') then
Result := GetStrProp(control,'Text') else if IsPublishedProp(control, 'Lines') then Result := (GetObjProp(control, 'TStrings') as TStrings).Text; |
Re: Zeiger auf Inhalt von TEdit TComboBox
Zitat:
@geskill: Wenn du mit "else" arbeitest werden die restlichen Bedingungen nicht geprüft sobald eine zutrifft. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:53 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