![]() |
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. |
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 |
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:
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.
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; |
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:
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.
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; Gruß Mazel |
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:
Was hier halt unschön ist, dass ich direkt aus der Klasse auf einzelne Formular Units zugreife.
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. |
Re: Komponenten je nach Einstellung unterschiedlich beschrif
Hallo,
suche einmal Informationen nach ![]() ![]() Jürgen |
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 ? |
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 |
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 13:10 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