Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zugriff auf Label aus "externer" Unit (neu gefragt) (https://www.delphipraxis.net/117586-zugriff-auf-label-aus-externer-unit-neu-gefragt.html)

DeddyH 21. Jul 2008 17:42

Re: Zugriff auf Label aus "externer" Unit (neu gef
 
Label1.Handle dürfte aber schwierig werden :zwinker:

hoika 21. Jul 2008 17:44

Re: Zugriff auf Label aus "externer" Unit (neu gef
 
Hallo,

stimmt ;)


Heiko

Scooty78 21. Jul 2008 21:18

Re: Zugriff auf Label aus "externer" Unit (neu gef
 
Nochmal kurz die prakmatischen Möglichkeiten aus meiner Sicht.

1. Wie die Kollegen vorher schon beschrieben haben, die frmMain in die Uses Anweisung von unLGU hinzufügen.

oder

2. (So mache ich es meistens) verwende Funktionen bzw. Prozeduren in der unLGU die Dir den gewünschten Wert gleich zurückgeben.
Du könnsten in der frmMain das Label dann zb über

Code:
label1.caption := getNewLabelCaption(IrgendeinUebergabeparameter);
den neuen Wert zuweisen und die eigentliche Funktion steht in Deiner externen Unit. So muss die unLGU nur in die uses Anweisung von frmMain.
Dadurch bleiben Deine Funktionen auch gleich flexibler und Du kannst Sie ggf. auch für andere Zwecke wieder brauchen.


Ich hoffe das hilft Dir weiter.

sx2008 21. Jul 2008 23:44

Re: Zugriff auf Label aus "externer" Unit (neu gef
 
Dein Ansatz ist schon falsch.
Ein Formular ist für sich selbst verantwortlich; d.h. es sorgt selbst dafür, dass es ist der richtigen Sprache angezeigt wird.
So wie du dir das vorstellst, versteust die die Verantwortlichkeiten über mehrere Units.
Das führt zu einem Programm, in dem sich kaum mehr etwas ändern lässt ohne dass an anderer Stelle etwas passiert oder
eine Änderung notwendig wird.
Stell dir vor, du änderst den Namen eines Labels von "Label18" nach "LblBruttopreis".
Was sofort eine Änderung in der Unit untLGU nach sich zieht.

Mögliche Lösung:
Jedes Formular hat eine Procedure zur Sprachumstellung:
Delphi-Quellcode:
procedure TForm1.SetLanguage;
begin
  SetLngCaption(lblName01, 1004);
  SetLngCaption(lblDescr01, 1008);
  ...
end;
Es gibt mehrere Möglichkeiten, wie man diese Prozedure ganz allgemein aufrufen kann, ohne jedes einzelne Formular
mit Uses einzubinden.
Egal, wie viele Formulare deine Anwendung hat, solange jedes Formular die Procedure SetLanguage hat
ist es möglich die Sprache zur Laufzeit umzuschalten.
Die aktuelle Sprache (LngNr) ist in irgendeinem globalen Objekt hinterlegt;
man braucht die Variable nicht überall mitzuschleifen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:59 Uhr.
Seite 2 von 2     12   

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