Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Komponenten je nach Einstellung unterschiedlich beschriften (https://www.delphipraxis.net/87100-komponenten-je-nach-einstellung-unterschiedlich-beschriften.html)

DerDelphi 23. Feb 2007 09:42


Komponenten je nach Einstellung unterschiedlich beschriften
 
Hallo,

ich habe ein Programm in Delphi Win32 geschrieben, dass eine Art Zeiterfassung darstellt. Nun möchte ich das je nach Variante die man z.b. per Radio Button einstellt, unterschiedliche Beschriftungen für labels,grids usw. (Komponenten) möglich sind.
Momentan suche ich noch nach der besten Möglichkeit dies zu tun.

- Ein Klasse schreiben die je nach Variante die einzelnen Kompontenen .Caption setzt
- Es gibt ja die Möglichkeit verschieden Sprachen ein Programm zu entwickeln, dass man darüber das steuert.

Bin für jeden Vorschlag dankbar.

Mazel 23. Feb 2007 12:37

Re: Komponenten je nach Einstellung unterschiedlich beschrif
 
So ganz verstehe ich deine Frage nicht. So wie ich es aber verstehe, brauchst du keine neue Klasse oder anderes, sondern du musst lediglich abfragen welches Item bzw. welcher Index gesetzt ist und je nachdem die Caption setzten.

Wenn ichs doch falsch habe, einfach schreiben.

[EDIT]
Eventuell noch ein Beispiel nennen.
[/EDIT]

Gruß Mazel

DerDelphi 23. Feb 2007 13:10

Re: Komponenten je nach Einstellung unterschiedlich beschrif
 
Ja so ähnlich.
Ich möchte nicht in jeder einzelnen Unit die Komponenten durchklappern sondern das ganze Zentral haben.
So dass ich später an nur einer Stelle schauen muss.

Delphi-Quellcode:
Programmversion : integer;

//Unit 1
if Programmversion= 1 then
   Unit1.label1.caption :="Programmversion 1";
   Unit1.label2.caption :="Herzlich Willkommen bei 1";
end;

//evtl. auch die Positionen der einzelnen Labels verändern
//Unit 1
if Programmversion= 2 then
   Unit1.label1.caption :="Programmversion 2";
   Unit1.label1.left:= Unit1.label1.left + 12;
   Unit1.label2.caption :="Herzlich Willkommen bei 2";
   Unit1.label3.visible:=false;
end;
Das wäre jetzt die einfachste Variante dir mir hier einfällt. Die Frage ist nun gibt es noch eine andere Möglichkeit, dass man dies besser lösen kann.

Mazel 23. Feb 2007 13:33

Re: Komponenten je nach Einstellung unterschiedlich beschrif
 
Vorne weg, nutze die Delphi-Tags wenn du Codebeispiele aufzeigts, weil das übersichtlicher ist. :wink:

Eine Möglichkeit wär zum Beispiel:
Delphi-Quellcode:
var
 Label1CaptionArr: array[1..3] of String;
 Label1LeftArr: array[1..3] of Integer;
 Label2CaptionArr: array[1..3] of String;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Label1CaptionArr[1] := 'Überschrift 1 Radio 1';
 Label1LeftArr[1] := 12;
 Label2CaptionArr[1] := 'Überschrift 2 Radio1';
 Label1CaptionArr[2] := 'Überschrift 1 Radio 2';
 Label1LeftArr[2] := 34;
 Label2CaptionArr[2] := 'Überschrift 2 Radio2';
 Label1CaptionArr[3] := 'Überschrift 1 Radio 3';
 Label1LeftArr[3] := 67;
 Label2CaptionArr[3] := 'Überschrift 2 Radio3';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 i: Byte;

begin
 If RadioButton1.Checked then i := 1
 Else If RadioButton2.Checked then i := 2
 Else i := 3;
 Label1.Caption := Label1CaptionArr[i];
 Label1.Left := Label1LeftArr[i];
 Label2.Caption := Label2CaptionArr[i];
end;
Hier musst du zwar auch noch an 2. Stellen Änderungen vornehmen aber nur geringfügig. Wenn es aber eine RadioGroup ist dann nuch noch im OnCreate, da du dann die Indizes bekommst.
Gruß
Mazel

DerDelphi 24. Feb 2007 00:25

Re: Komponenten je nach Einstellung unterschiedlich beschrif
 
Danke erstmal für die Antwort.
Ich finde deine Methode allerdings umständlicher,da ich hier wie du schon sagst an 2.Stellen Code ändern müsste.
Ziel ist es auch sowenig wie möglich in den einzelnen Formular Units Code dafür hinterlegen.

Ich dachte eigentlich daran, dass ich jedem Formular Unit das ich habe in der FormCreate Methode ein Funktionsaufruf übergebe :

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
InitializeCaptions(Version);
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
InitializeCaptions(Version);
end;

procedure TForm3.FormCreate(Sender: TObject);
begin
InitializeCaptions(Version);
end;

dann dazu eine Klasse bzw. die Funktion(Methode) einfach ausgelagert
//globale Variable die gesetzt wird.
Version : integer;

procedure InitializeCaptions(Version:integer)
begin
//Unit 1
if Programmversion= 1 then
   Unit1.label1.caption :="Programmversion 1";
   Unit1.label2.caption :="Herzlich Willkommen bei 1";
   Unit2.label1.caption :="Programmversion 1";
   Unit2.label2.caption :="Herzlich Willkommen bei 1";
   Unit3.label5.caption :="Wiedersehen in 1";
end;

//evtl. auch die Positionen der einzelnen Labels verändern
//Unit 1
if Programmversion= 2 then
   Unit1.label1.caption :="Programmversion 2";
   Unit1.label1.left:= Unit1.label1.left + 12;
   Unit1.label2.caption :="Herzlich Willkommen bei 2";
   Unit1.label3.visible:=false;
end;
end.
Was hier halt unschön ist, dass ich direkt aus der Klasse auf einzelne Formular Units zugreife.

Jürgen Thomas 24. Feb 2007 09:03

Re: Komponenten je nach Einstellung unterschiedlich beschrif
 
Hallo,

suche einmal Informationen nach Hier im Forum suchenLocalization oder Hier im Forum suchenMehrsprachigkeit o.ä. Dort dürftest Du passende Tipps erhalten.

Jürgen

DerDelphi 26. Feb 2007 10:08

Re: Komponenten je nach Einstellung unterschiedlich beschrif
 
Also ich habe nun nach diesen Begrifflichkeiten gesucht und auch einiges gefunden.Nur werde ich noch nicht so ganz daraus schlau.
Es scheint wohl mehrere gute ext. Tools zu geben die einem die Mehrsprachigkeit vereinfachen.
Nur ich möchte nicht nur die Komponenten anders beschriften sondern auch zusätzlich Komponenten verschieben, verstecken usw.

Gibt es jmd. der mir hier konkrete Hilfe bieten kann ?

Light 26. Feb 2007 11:56

Re: Komponenten je nach Einstellung unterschiedlich beschrif
 
Hi Ihr,

Wenn du dir die Mühe machst und alle Labels und co - wo halt Text geändert werden muss so mit Eindeutigen bzw. extra Identischen Namen versiehst dann könntest du vielleicht mit FindKomponent oder so heißt das was anfangen...
Nur mal so als Idee...
oder du erstellst halt das Gesamte Layout "Dynamisch" dann sollte es auch kein Prob sein die Texte und Positionen anzupassen...

Beschreibe doch noch mal genauer was du damit erreichen willst vielleicht gibt es auch einen Ganz anderen Lösungsansatz...

Notfalls halt doch einzeln .Caption ändern....

Leuchtende Grüße

Stefan

turboPASCAL 26. Feb 2007 13:01

Re: Komponenten je nach Einstellung unterschiedlich beschrif
 
Arbeite mit mehreren Forms oder mit Frames. Darauf kannst du deine Kompon. anordnen wie
du es möchtest. Der Aufwand wird sonst sehr gross denn sonst müsstest du den betreffenden
Text und die Positionen und Eigenschaften eines Elementes in irgend einer Form in eine Datei
speichern was dir ja Delphi über die Formen (*.dfm) schon bietet.

Bei Mehrsprachversionen ist es einfacher die btr. Sprachvarianten in eine extra Datei zu
Packen zB. einer DLL.


Gruss...


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:43 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