Autor Beitrag
p_m
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mo 21.05.07 15:31 
Könnt ihr mir mal bitte eine vereinfachte Methode eines solchen Codes geben:

ausblenden 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 user profile iconChristian S.: Delphi-Tags repariert
Chatfix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1583
Erhaltene Danke: 10

Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
BeitragVerfasst: 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:

ausblenden 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:

ausblenden Delphi-Quelltext
1:
  Label1.Font := DSchrift.Font;					


EDIT: Die letzte Variante funktioniert auch, ist also die einfachste.

_________________
Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 21.05.07 15:48 
user profile iconChatfix hat folgendes geschrieben:
Ich weis nicht ob du direkt den Font-Teil übergeben kannst, hab grad kein Delphi das zu testen:

ausblenden 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 612

WIN 2000, WIN XP, Mac OS X
D7 Enterprise, XCode, Eclipse, Ruby On Rails
BeitragVerfasst: Mo 21.05.07 16:01 
user profile iconjaenicke 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

_________________
Ein Computer ohne Windows ist wie eine Schokoladentorte ohne Senf.
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mo 21.05.07 16:07 
ausblenden 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:
ausblenden 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..6of 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.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm2.Schrift1Click(Sender: TObject);
var
  names: array[1..6of 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
Panel.Font := DSchrift.Font;					

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 21.05.07 18:27 
Moin!

@user profile iconp_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

_________________
There are 10 types of people - those who understand binary and those who don´t.