Entwickler-Ecke
Sonstiges (Delphi) - Vereinfachung!!!
p_m - Mo 21.05.07 15:31
Titel: Vereinfachung!!!
Könnt ihr mir mal bitte eine vereinfachte Methode eines solchen Codes geben:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| procedure TForm2.Schrift1Click(Sender: TObject); begin if DSchrift.Execute then Label1.Font.Name := DSchrift.Font.Name; Label2.Font.Name := DSchrift.Font.Name; Label1.Font.Size := DSchrift.Font.Size; Label2.Font.Size := DSchrift.Font.Size; Label1.Font.Style := DSchrift.Font.Style; Label2.Font.Style := DSchrift.Font.Style; Label1.Font.Charset := DSchrift.Font.Charset; Label2.Font.Charset:= DSchrift.Font.Charset; BSpeichern.Font.Name:=DSchrift.Font.Name; BSpeichern.Font.Size:=DSchrift.Font.Size; BSpeichern.Font.Charset:=DSchrift.Font.Charset; BAusgeben.Font.Name:=DSchrift.Font.Name; BAusgeben.Font.Size:=DSchrift.Font.Size; BAusgeben.Font.Charset:=DSchrift.Font.Charset; BDiagramm.Font.Name:=DSchrift.Font.Name; BDiagramm.Font.Size:=DSchrift.Font.Size; BDiagramm.Font.Charset:=DSchrift.Font.Charset; BDiagramm2.Font.Name:=DSchrift.Font.Name; BDiagramm2.Font.Size:=DSchrift.Font.Size; BDiagramm2.Font.Charset:=DSchrift.Font.Charset;
end; |
geht um eine FontDialog-Anweisung
wäre nett !!!!!
Danke schon mal im voraus
Moderiert von
Christian S.: Delphi-Tags repariert
Chatfix - Mo 21.05.07 15:38
Würdest du deinen Quelltext bitte mit den Delphi-Tags formatieren.
Vielen Dank.
Du könntest z.b. mit with arbeiten:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| with Label1.Font do begin Name := DSchrift.Font.Name; Size := DSchrift.Font.Size; Style := DSchrift.Font.Style; end; |
Ich weis nicht ob du direkt den Font-Teil übergeben kannst, hab grad kein Delphi das zu testen:
Delphi-Quelltext
1:
| Label1.Font := DSchrift.Font; |
EDIT: Die letzte Variante funktioniert auch, ist also die einfachste.
jaenicke - Mo 21.05.07 15:48
Chatfix hat folgendes geschrieben: |
Ich weis nicht ob du direkt den Font-Teil übergeben kannst, hab grad kein Delphi das zu testen:
Delphi-Quelltext 1:
| Label1.Font := DSchrift.Font; |
EDIT: Die letzte Variante funktioniert auch, ist also die einfachste. |
Die einfachste mag es sein, aber so sollte man es nicht machen...
Besser:
Delphi-Quelltext
1:
| Label1.Font.Assign(DSchrift.Font); |
Der Grund: Mit letzterem Code werden lediglich die Attribute kopiert, nicht aber der vorhandene Zeiger auf eine Instanz von TFont durch einen anderen überschrieben.
Wenn man das nämlich macht, dann wird wohl eine Änderung an einer der beiden Font-Eigenschaften auch bei der anderen ankommen.
Das hab ich nicht getestet, aber ich glaube, dass es so ist...
// EDIT: Nö, ist nicht so. Vielleicht ist die Zuweisung doch dasselbe wie Assign. Keine Ahnung.
Stefan.Buchholtz - Mo 21.05.07 16:01
jaenicke hat folgendes geschrieben: |
Der Grund: Mit letzterem Code werden lediglich die Attribute kopiert, nicht aber der vorhandene Zeiger auf eine Instanz von TFont durch einen anderen überschrieben.
Wenn man das nämlich macht, dann wird wohl eine Änderung an einer der beiden Font-Eigenschaften auch bei der anderen ankommen.
Das hab ich nicht getestet, aber ich glaube, dass es so ist...
// EDIT: Nö, ist nicht so. Vielleicht ist die Zuweisung doch dasselbe wie Assign. Keine Ahnung. |
Die Set-Methode des Font-Properties macht ein Assign.
Stefan
F34r0fTh3D4rk - Mo 21.05.07 16:07
Titel: Re: Vereinfachung!!!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| procedure TForm2.Schrift1Click(Sender: TObject); begin if DSchrift.Execute then begin Label1.Font.Name := DSchrift.Font.Name; Label2.Font.Name := DSchrift.Font.Name; Label1.Font.Size := DSchrift.Font.Size; Label2.Font.Size := DSchrift.Font.Size; Label1.Font.Style := DSchrift.Font.Style; Label2.Font.Style := DSchrift.Font.Style; Label1.Font.Charset := DSchrift.Font.Charset; Label2.Font.Charset:= DSchrift.Font.Charset; BSpeichern.Font.Name:=DSchrift.Font.Name; BSpeichern.Font.Size:=DSchrift.Font.Size; BSpeichern.Font.Charset:=DSchrift.Font.Charset; BAusgeben.Font.Name:=DSchrift.Font.Name; BAusgeben.Font.Size:=DSchrift.Font.Size; BAusgeben.Font.Charset:=DSchrift.Font.Charset; BDiagramm.Font.Name:=DSchrift.Font.Name; BDiagramm.Font.Size:=DSchrift.Font.Size; BDiagramm.Font.Charset:=DSchrift.Font.Charset; BDiagramm2.Font.Name:=DSchrift.Font.Name; BDiagramm2.Font.Size:=DSchrift.Font.Size; BDiagramm2.Font.Charset:=DSchrift.Font.Charset; end; end; |
hättest du gescheit formatiert, wäre dir (hoffentlich) aufgefallen, dass du ein
begin end; vergessen hast. verkürzen könnte man das zB so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm2.Schrift1Click(Sender: TObject); var names: array[1..6] of string = ('Label1', 'Label2', 'BSpeichern', 'BAusgeben', 'BDiagramm', 'BDiagramm2'); i: integer; begin if DSchrift.Execute then for i := 1 to 6 do with findcomponent(names[i]).Font do begin Name := DSchrift.Font.Name; Size := DSchrift.Font.Size; Charset := DSchrift.Font.Charset; end; end; |
oder du weißt gleich die komplette font zu.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm2.Schrift1Click(Sender: TObject); var names: array[1..6] of string = ('Label1', 'Label2', 'BSpeichern', 'BAusgeben', 'BDiagramm', 'BDiagramm2'); i: integer; begin if DSchrift.Execute then for i := 1 to 6 do with findcomponent(names[i]) do Font := DSchrift.Font; end; |
mfg
Lannes - Mo 21.05.07 16:35
Hallo,
oder, wenn das in das Anwendungslayout passt, leg die Komponenten auf ein Panel.
Dann braucht man nur die Fonteigenschaft des Panels ändern, vorrausgesetzt die Eigenschaft ParentFont der Komponenten hat den Wert True. Einzelne Komponenten kann man davon ausschließen indem man bei diesen ParentFont auf False setzt.
Dann bleibt die Codezeile übrig:
Delphi-Quelltext
1:
| Panel.Font := DSchrift.Font; |
Narses - Mo 21.05.07 18:27
Moin!
@
p_m: Könntest du dem Thread bitte einen aussagekräftigen Titel geben (z.B. "Font-Eigenschaft mehrerer Controls auf einmal setzen"), damit man auch ohne Durchlesen ahnen kann, worum es hier geht? :| Danke. ;)
cu
Narses
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!