AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MessagBox in anderer Schriftart

Ein Thema von n0b0dy · begonnen am 20. Sep 2005 · letzter Beitrag vom 21. Sep 2005
Antwort Antwort
Seite 1 von 2  1 2      
n0b0dy

Registriert seit: 12. Sep 2005
Ort: Hessen
268 Beiträge
 
#1

MessagBox in anderer Schriftart

  Alt 20. Sep 2005, 21:02
Hi Leute,

ich habe eigentlich einfach nur vor, die Schriftart einer stinknormalen MessageBox zu ändern.
unten bei dem großen Pfeil wird die Schriftart für das Label geändert. So, nun hab ich noch ne stelle markiert und zwar die, wo, wie ich denke, die größe für den textbereich festgelegt wird...

naja auf jeden fall kommt es vor, dass bei veränderter schriftart, der text nicht vollständig auf der messagebox sichtbar ist. also abgeschnitten ist. und das möchte ich verhindern. habe probiert beim Label Autosize:=True anzuwenden, jedoch ohne erfolg. der text wird ja auch wahrscheicnlich durch das TextRect begrenzt.. So sehe ich das zumindest.
naja auf jeden fall funzt das net und bräuchte dringend hilfe. hat da jemand eine idee?

Hier ein auszug der Dialogs.pas:
Delphi-Quellcode:
function CreateMessageDialog(const Msg: string; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons): TForm;
  ...

        if ButtonWidths[B] = 0 then
        begin
          TextRect := Rect(0,0,0,0); <----------------------------------------------
          Windows.DrawText( canvas.handle,
            PChar(LoadResString(ButtonCaptions[B])), -1,
            TextRect, DT_CALCRECT or DT_LEFT or DT_SINGLELINE or
            DrawTextBiDiModeFlagsReadingOnly);
  ...
    TMessageForm(Result).Message := TLabel.Create(Result);
    with TMessageForm(Result).Message do
    begin
      Name := 'Message';
      Font.Name := 'Verdana//Default ist wohl Tahoma <-----------------------------------
      Parent := Result;
      ALeft := IconTextWidth - TextRect.Right + HorzMargin;
      if UseRightToLeftAlignment then
        ALeft := Result.ClientWidth - ALeft - Width;
      SetBounds(ALeft, VertMargin,
        TextRect.Right, TextRect.Bottom);
    end;
   ...
  end;
end;

Ciao
Gruß Fabi
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2

Re: MessagBox in anderer Schriftart

  Alt 20. Sep 2005, 22:14
Hi n0b0dy,

wenn Du rechtlich geschützten Code kopieren musst, dann konzentriere Dich bitte auf das Wesentlichste. Die oben gepostete Menge war eindeutig zu viel. Poste bitte nur die relevante Stelle, aber nicht sooo viel.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
n0b0dy

Registriert seit: 12. Sep 2005
Ort: Hessen
268 Beiträge
 
#3

Re: MessagBox in anderer Schriftart

  Alt 20. Sep 2005, 22:22
ui sry.

aber geht klar ! beim nächstenmal werd ichs berücksichtigen


[EDIT] Hoffe so ists nun besser [/EDIT]
Gruß Fabi
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: MessagBox in anderer Schriftart

  Alt 21. Sep 2005, 06:44
Wieso kopierst du dir die Procedure nicht in eine eigene Unit und veränderst den Stringt mit 'Verdana' in das, was du willst?
Oder darf man das nicht?

Was anderes: Ich finde das gar nicht schön, wenn ein Programm Fehlermeldungen anzeigt, die aus meinem Windows-Style herausfallen. Das sieht sehr überladen aus... Außerdem is es unprofessionell (außer du setzt es gezielt und passend ein...)...

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
n0b0dy

Registriert seit: 12. Sep 2005
Ort: Hessen
268 Beiträge
 
#5

Re: MessagBox in anderer Schriftart

  Alt 21. Sep 2005, 08:44
glaube mir es ist SEHR passend. wirste mir noch bestätigen, wenns erstmal hier freeware ist *g*

ne, aber
ich kopiere ja den text in eine eigene procedure und habe da auch Verdana eingetragen. das prob ist nur das, dass das Label auf der MessageForm zu klein für Verdana ist, und somit Teile des Textes abgeschnitten sind....

im ersten thread beim ersten pfeil wird wohl die größe festgelegt mit Windows.Draw....
wahrscheinlcih nimmt der dazu die StandardSchriftart von windows. aber da Verdana ja um eineiges Breiter ist, sieht man später nur Teile einer Frage oder so. und Ich wollte nun wissen, wie man das RICHTIG macht, mit der schriftart ändern
Gruß Fabi
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: MessagBox in anderer Schriftart

  Alt 21. Sep 2005, 09:24
Zitat von n0b0dy:
So, nun hab ich noch ne stelle markiert und zwar die, wo, wie ich denke, die größe für den textbereich festgelegt wird...
Richtig, Windows.DrawText mit der Option DT_CALCRECT berechnet die Grösse des Rechtecks,
dass für die Textausgabe benötigt wird und legt das Ergebnis in TextRect ab.
Natürlich muss vorher der Font eingestellt werden. Du tust es danach...
Andreas
  Mit Zitat antworten Zitat
n0b0dy

Registriert seit: 12. Sep 2005
Ort: Hessen
268 Beiträge
 
#7

Re: MessagBox in anderer Schriftart

  Alt 21. Sep 2005, 11:10
ja dann sag mir doch mal bitte mit was ich den Font festlegen soll, bzw wie?

unten da wird nur die schriftart vom label verändert. wie soll ich denn oben bei windows.Draw ne schriftart festlegen?
Gruß Fabi
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: MessagBox in anderer Schriftart

  Alt 21. Sep 2005, 11:22
Zitat von n0b0dy:
ja dann sag mir doch mal bitte mit was ich den Font festlegen soll, bzw wie?

unten da wird nur die schriftart vom label verändert. wie soll ich denn oben bei windows.Draw ne schriftart festlegen?
Schau dir mal den Anfang an!

Delphi-Quellcode:
//...

begin
  Result := TMessageForm.CreateNew(Application);
  with Result do
  begin
    BiDiMode := Application.BiDiMode;
    BorderStyle := bsDialog;
{=>}Canvas.Font := Font;{<=}
{             /\           }
{             ||           }
{             ||           }

//...
Und passende Stelle gefunden?
Versuch das da mal...

Bye
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#9

Re: MessagBox in anderer Schriftart

  Alt 21. Sep 2005, 11:23
Hai n0b0dy,

wie rufst Du das denn auf? Wenn ich es so mache kann ich den Font angeben:
Delphi-Quellcode:
procedure TForm1.btn_ShowDialogClick(Sender: TObject);
var
  myDialog : TForm;
begin
  myDialog := CreateMessageDialog('blubb',mtInformation,[mbYes,mbNo]);
  try
    myDialog.Font.Name := 'Script';
    myDialog.ShowModal;
  finally
    myDialog.Free;
  end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: MessagBox in anderer Schriftart

  Alt 21. Sep 2005, 11:30
Zitat von Sharky:
Hai n0b0dy,

wie rufst Du das denn auf? Wenn ich es so mache kann ich den Font angeben:
Delphi-Quellcode:
procedure TForm1.btn_ShowDialogClick(Sender: TObject);
var
  myDialog : TForm;
begin
  myDialog := CreateMessageDialog('blubb',mtInformation,[mbYes,mbNo]);
  try
    myDialog.Font.Name := 'Script';
    myDialog.ShowModal;
  finally
    myDialog.Free;
  end;
end;
Änderst so ja genau die stelle, welche ich markiert hatte


Noch ein Tip:
Im grunde mußt du den Font vor
Delphi-Quellcode:
//...

          Windows.DrawText( canvas.handle,
            PChar(LoadResString(ButtonCaptions[B])), -1,
            TextRect, DT_CALCRECT or DT_LEFT or DT_SINGLELINE or
            DrawTextBiDiModeFlagsReadingOnly);

//...
ändern, da der da ja schon gezeichnet wird, Informationen die er braucht sind ja im Canvas, sprich Font & Co, also oben mal schaun was ich geschrieben hatte und beachten, was Sharky gemacht hatte, dann liegt die lösung auf der Hand!

Die Lösung ist ganz ganz einfach

Bye
Christian
  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 18:45 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