![]() |
Zugriff auf Label aus "externer" Unit (neu gefragt
Hi,
das Thema wurde zwar im Febr. schon mal angefragt, aber aus meiner Sicht haben die antwortenden User den Frager event.nicht richtig verstanden. und daher hoffe ich, daß es vielleicht doch noch eine "schöne Lösung" gibt: Problemstellung: - auf der Form frmMain befinden sich zahlreiche Objekte, u.A. Labels und Memos. - der Ordnung halber werden bestimmte Proceduren, die sich dieser Objekte bedienen in eigene Units ausgelagert, so z.B. alle Routinen für die Sprachumschaltung in eine Unit untLGU oder alles was die anzuzeigenden Werte darstellt in untDraw. In VB (da komme ich eigentlich her) ist das jetzt ganz einfach, da habe ich aus jedem Modul (unit) zugriff über z.B. frmMain.lblName01.caption . Die einzelne Übergabe aller Objekte in die Procedur scheidet aus, da ich innerhalb der Procedur mehrere Objekte aus der Form ansprechen will. Frage: Wie müßte die RICHTIGE deklaration aussehen wenn ich in der untLGU folgendes machen wollte procedure ChangeLanguage(objForm: TObject); objForm.lblName01.caption = getlngString(LngNr, 1004); objForm.lblDescr01.caption = getlngString(LngNr, 1008); ... usw. Schon mal im Voraqus vielen Dank für die hoffentlich creativen Lösungsvorschläge. |
Re: Zugriff auf Label aus "externer" Unit (neu gef
Du musst die fremde Unit in den Uses einbinden
|
Re: Zugriff auf Label aus "externer" Unit (neu gef
indem du objForm nach TFrmMain castest oder gleich (objForm: TFrmMain) verwendest
|
Re: Zugriff auf Label aus "externer" Unit (neu gef
erst mal danke für die schnelle Antwort.
@mkinzler: das war mir schon klar, sonst wird die proc ja nicht gefunden :-) @dominikkv: - was bitte ist casten, bzw. wie geht das? - das mit (objForm: TFrmMain) war auch mein erster gedanke, aber dann bekomme ich die meldung [Error] untLGU.pas(24): Undeclared identifier: 'TFrmMain' weil in dieser richtung doch kein USES-verweis auf die untMain drin steht (wegen der cross-Referenz) |
Re: Zugriff auf Label aus "externer" Unit (neu gef
Delphi-Quellcode:
(objForm as TFrmMain).lblName01.caption = getlngString(LngNr, 1004);
Zitat:
|
Re: Zugriff auf Label aus "externer" Unit (neu gef
Hallo,
schöner wäre es allerdings, eine lokale Variable zu benutzen:
Delphi-Quellcode:
var
MyFrmMain: TFrmMain; begin MyFrmMain:= TFrmMain(objForm); // die harten with MyFrmMain as TFrmMain(objForm) do // die vorsichtigen checken den richtigen Typ begin MyFrmMain .Label1.Caption:= 'bla'; end; end; Heiko |
Re: Zugriff auf Label aus "externer" Unit (neu gef
Zitat:
du meinst wohl
Delphi-Quellcode:
@MisterCP: wenn du die Unit im Implementation-Teil bekannt gibst hast du keine zirkuläre Unitreferenz:
with MyFrmMain do
begin Label1.Caption:= 'bla'; end; // oder with TFrmMain(objForm) do begin Label1.Caption:= 'bla'; end; // oder with objForm as TFrmMain do begin Label1.Caption:= 'bla'; end;
Delphi-Quellcode:
interface
// bla implementation uses UnitMitTFrmMain; procedure ChangeLanguage; begin frmMain.lblName01.caption = getlngString(LngNr, 1004); frmMain.lblDescr01.caption = getlngString(LngNr, 1008); //... usw. end; |
Re: Zugriff auf Label aus "externer" Unit (neu gef
Eher
Delphi-Quellcode:
MyFrmMain := (objForm as TFrmMain); //Softcast
|
Re: Zugriff auf Label aus "externer" Unit (neu gef
Ich kenn mich jetzt net ganz sogut damit aus, aber (ganz dumm gefragt) geht das net vieleicht mit Handles????
Dass man vieleicht mit den WinAPI Funktionen den Caption setzt???? Wenn jetzt um andere Eigenschaften geht, die jetzt nur das label hat und nicht mit WinAPI geht, weiß ich mir auch keinen Rat. |
Re: Zugriff auf Label aus "externer" Unit (neu gef
Hallo,
na klar kann man auch nur das Handle speichern und dann z.B. per SendMessage(Label_1_Handle, WM_SETTTEXT... die Werte setzen. Aber warum weg von der VCL ? Eine andere Mögöiochkeit wäre, sich in einer eigenen Klasse die TLabel zu merken (das macht das Form) (quasi nur die Pointer) und dann die Klasse übergeben und benutzen. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:59 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