AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Zugriff auf Label aus "externer" Unit (neu gefragt)
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf Label aus "externer" Unit (neu gefragt)

Ein Thema von MisterCP · begonnen am 21. Jul 2008 · letzter Beitrag vom 22. Jul 2008
Antwort Antwort
Seite 1 von 2  1 2      
MisterCP

Registriert seit: 24. Jan 2008
15 Beiträge
 
#1

Zugriff auf Label aus "externer" Unit (neu gefragt

  Alt 21. Jul 2008, 15:28
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

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

  Alt 21. Jul 2008, 15:31
Du musst die fremde Unit in den Uses einbinden
Markus Kinzler
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#3

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

  Alt 21. Jul 2008, 15:31
indem du objForm nach TFrmMain castest oder gleich (objForm: TFrmMain) verwendest
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
MisterCP

Registriert seit: 24. Jan 2008
15 Beiträge
 
#4

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

  Alt 21. Jul 2008, 15:47
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)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

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

  Alt 21. Jul 2008, 15:51
(objForm as TFrmMain).lblName01.caption = getlngString(LngNr, 1004);
Zitat:
weil in dieser richtung doch kein USES-verweis auf die untMain drin steht (wegen der cross-Referenz)
Binde rückwärts im Implementierungs-Teil ein
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#6

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

  Alt 21. Jul 2008, 15:58
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
Heiko
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#7

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

  Alt 21. Jul 2008, 17:17
Zitat von hoika:
Delphi-Quellcode:
  with MyFrmMain as TFrmMain(objForm) do // die vorsichtigen checken den richtigen Typ
  begin
    MyFrmMain .Label1.Caption:= 'bla';
  end;
wtf?
du meinst wohl
Delphi-Quellcode:
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;
@MisterCP: wenn du die Unit im Implementation-Teil bekannt gibst hast du keine zirkuläre Unitreferenz:

Delphi-Quellcode:
interface
  // bla
implementation
  uses
    UnitMitTFrmMain;

procedure ChangeLanguage;
begin
  frmMain.lblName01.caption = getlngString(LngNr, 1004);
  frmMain.lblDescr01.caption = getlngString(LngNr, 1008);
//... usw.
end;
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#8

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

  Alt 21. Jul 2008, 17:27
Eher
  MyFrmMain := (objForm as TFrmMain); //Softcast
Markus Kinzler
  Mit Zitat antworten Zitat
NickelM

Registriert seit: 22. Jul 2007
Ort: Carlsberg
445 Beiträge
 
Delphi 2009 Professional
 
#9

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

  Alt 21. Jul 2008, 18:30
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.
Nickel
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#10

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

  Alt 21. Jul 2008, 18:40
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
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz