AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte MpuAboutWnd
Thema durchsuchen
Ansicht
Themen-Optionen

MpuAboutWnd

Ein Thema von Luckie · begonnen am 6. Jan 2007 · letzter Beitrag vom 13. Jul 2007
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Re: MpuAboutWnd

  Alt 7. Jan 2007, 21:40
Zitat von MrKnogge:
Das einzigste was mir aufgefallen ist, dass die Schrift größer wird, sie sich aber nicht mehr verkleinert.
Könnte man das noch ändern ?
Habs geändert. Das Problem war, dass ich für die normalen Labels die Schrift mit GetStockObject(DEFAULT_GUI_FONT) setze. Da ich leider noch nicht weiß, wie ich an die chrift drankomme habe ich beim Überfahren der Mause Tahoma genommen, was bei mir auch der DEFAULT_GUI_FONT entspricht. Ich habe jetzt erstmal eine andere Schrift genommen und das LinkLabel unter dem Copyright plaziert, weil es für lange URLs etwas kanpp war neben der OK-Schaltfläche.


Zitat:
Zitat von Luckie:
Das Fenster wird nicht in der Bildschirmmitte zentriert, sondern über dem aufrufenden Fenster.
Wenn du das Handle des Programms übergibst, dann wird das Fenster in der Bildschirmmitte zentriert angezeigt.
Weil das unsichtbare Application-Fenster wohl zentriert (nicht) angezeigt wird. Übergibst du das Handle der aufrufenden Form, wird es über dieser zentriert.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#2

Re: MpuAboutWnd

  Alt 7. Jan 2007, 21:45
Zitat von Luckie:
Könnte ich auch machen, aber wenn man im Dialog ein anderes Icon haben will, hat man ein Problem. Ich will zum Beispiel im About-Dialog mein persönliches Icon haben und nicht das von der Anwendung.
Und was hält dich davon ab ein beliebiges eigenes Icon zu benutzen??? Also irgendwie verstehe ich dich in letzter Zeit nicht mehr ...



Kannst du uns allen auch mal das hier erklären?:
Code:
  case uMsg of
    WM_MOUSELEAVE:
      if WindowHover then
      begin
        // reset state
        WindowHover := False;
        // create and set font
        [color=red]LinkFontHover := CreateFont(-MulDiv(LINKFONTSIZE, GetDeviceCaps(GetDC(hLinkStc), LOGPIXELSY), 72), 0, 0, 0, 400,
          0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, LINKFONTNAME);[/color]
        if LinkFontHover <> 0 then
        begin
          // save handle as a window property
          [color=red]SetProp(hLinkStc, 'LinkFontHover', LinkFontHover);
          SendMessage(hLinkStc, WM_SETFONT, Integer(LinkFontHover), Integer(true));[/color]
        end;
      end;
    WM_MOUSEMOVE:
      if not WindowHover then
      begin
        // save state
        WindowHover := True;
        // create and set font
        [color=red]LinkFontNonHover := CreateFont(-MulDiv(LINKFONTSIZE, GetDeviceCaps(GetDC(hLinkStc), LOGPIXELSY), 72), 0, 0, 0,
          400, 0, 1, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH,
          LINKFONTNAME);[/color]
        if LinkFontNonHover <> 0 then
        begin
          // save the handle as a window property
          [color=red]SetProp(hLinkStc, 'LinkFontNonHover', LinkFontNonHover);
          SendMessage(hLinkStc, WM_SETFONT, Integer(LinkFontNonHover), Integer(true));[/color]
        end;
        // track WM_MOUSELEAVE
        EventTrack.cbSize := SizeOf(EventTrack);
        EventTrack.dwFlags := TME_LEAVE;
        EventTrack.hwndTrack := hLinkStc;
        EventTrack.dwHoverTime := HOVER_DEFAULT;
        TrackMouseEvent(EventTrack);
      end;
Mir erschließt sich im Moment nämlich nicht, wieso du bei jedem Mal einen neuen Font erstellst und den alten überschreibst ohne vorher das Handle freizugeben ...

Da wäre noch einiges zu kommentieren, habe ich aber im Moment weder Zeit noch Lust zu ... ewige Dunkelheit macht depressiv.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: MpuAboutWnd

  Alt 7. Jan 2007, 21:51
Hm, jetzt, wo du es sagst.

Ess Schokolade, dass macht glücklich.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#4

Re: MpuAboutWnd

  Alt 7. Jan 2007, 21:52
Zitat von Luckie:
[...]Ich habe jetzt erstmal eine andere Schrift genommen und das LinkLabel unter dem Copyright plaziert[...]
So finde ich es auch besser !

Zitat von Luckie:
Weil das unsichtbare Application-Fenster wohl zentriert (nicht) angezeigt wird.
Unsichtbares Application-Fenster
Davon habe ich noch nie etwas gehört. (Hab es halt mit AboutWnd.ShowAboutWnd(Application.Handle) gemacht.
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#5

Re: MpuAboutWnd

  Alt 7. Jan 2007, 21:52
Zitat von Luckie:
Hm, jetzt, wo du es sagst.

Ess Schokolade, dass macht glücklich.
... und dick(er)
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#6

Re: MpuAboutWnd

  Alt 7. Jan 2007, 21:55
Zitat von MrKnogge:
Unsichtbares Application-Fenster
Davon habe ich noch nie etwas gehört. (Hab es halt mit AboutWnd.ShowAboutWnd(Application.Handle) gemacht.
Jupp, da hat dir der Luckie wohl eine Neuigkeit erzählt? Das (Haupt-)Form ist nicht das gleiche Fenster wie jenes das du über Application.Handle bekommst ... sollte doch schon aufgefallen sein, oder?
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#7

Re: MpuAboutWnd

  Alt 7. Jan 2007, 21:58
Ja, nur ging ich davon aus, das ich das Handle der Anwenung bekomme nicht von irgend ner Form.
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: MpuAboutWnd

  Alt 7. Jan 2007, 22:13
Ich wollte es jetzt so machen:
Delphi-Quellcode:
WM_CREATE:
      begin
        // create fonts
        LinkFontHover := CreateFont(-MulDiv(LINKFONTSIZE, GetDeviceCaps(GetDC(hLinkStc), LOGPIXELSY), 72), 0, 0, 0,
          400, 0, 1, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH,
          LINKFONTNAME);
        // save handle as a window property
        SetProp(hLinkStc, 'LinkFontHover', LinkFontHover);
        LinkFontNonHover := CreateFont(-MulDiv(LINKFONTSIZE, GetDeviceCaps(GetDC(hLinkStc), LOGPIXELSY), 72), 0, 0, 0,
          400, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH,
          LINKFONTNAME);
        // save the handle as a window property
        SetProp(hLinkStc, 'LinkFontNonHover', LinkFontNonHover);
      end;
    WM_MOUSELEAVE:
      begin
        if WindowHover then
        begin
          // reset state
          WindowHover := False;
          // set font
          SendMessage(hLinkStc, WM_SETFONT, GetProp(hLinkStc, 'LinkFontNonHover'), Integer(true));
        end;
      end;
    WM_MOUSEMOVE:
      if not WindowHover then
      begin
        // save state
        WindowHover := True;
        // set font
        SendMessage(hLinkStc, WM_SETFONT, GetProp(hLinkStc, 'LinkFontHover'), Integer(true));
        // track WM_MOUSELEAVE
        EventTrack.cbSize := SizeOf(EventTrack);
        EventTrack.dwFlags := TME_LEAVE;
        EventTrack.hwndTrack := hLinkStc;
        EventTrack.dwHoverTime := HOVER_DEFAULT;
        TrackMouseEvent(EventTrack);
      end;
    WM_DESTROY:
      begin
        // delete objects and remove properties from the window property list
        DeleteObject(GetProp(hLinkStc, 'LinkFontNonHover'));
        RemoveProp(hLinkStc, 'LinkFontNonHover');
        DeleteObject(GetProp(hLinkStc, 'LinkFontHover'));
        RemoveProp(hLinkStc, 'LinkFontHover');
      end;
Aber ich bekomme kein WM_CREATE.

Ich habe die Font Handles erstmal global gemacht, damit der Fehler zumindest raus ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von calculon
calculon

Registriert seit: 16. Sep 2006
256 Beiträge
 
Delphi 7 Personal
 
#9

Re: MpuAboutWnd

  Alt 7. Jan 2007, 22:33
Also, das mit dem Anzeigen funktioniert jetzt bei mir. Hatte tatsächlich ein falsches Handle zugewiesen. Ich find's sehr gut. Eines finde ich noch etwas störend:
Wenn ich in der File-Description einen etwas längeren Text einfüge, wird ab einer gewissen Zeilenanzahl der Text überdeckt. Ich werde mal im trial and error Verfahren versuchen, ob ich die Passage im Quelltext finde.

Gruß

Calculon
--
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#10

Re: MpuAboutWnd

  Alt 7. Jan 2007, 22:50
Zitat von Luckie:
Aber ich bekomme kein WM_CREATE.
Das wäre ja nicht unbedingt nötig. Dein vorhandener Code hätte ja bequem umgeschrieben werden können:

Delphi-Quellcode:
case uMsg of
    WM_MOUSELEAVE:
      if WindowHover then
      begin
        // reset state
        WindowHover := False;
        LinkFontHover := GetProp(hLinkStc, 'LinkFontHover');
        if LinkFontHover = 0 then
        begin
          // create and set font
          LinkFontHover := CreateFont(-MulDiv(LINKFONTSIZE, GetDeviceCaps(GetDC(hLinkStc), LOGPIXELSY), 72), 0, 0, 0, 400,
            0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, LINKFONTNAME);
          // save handle as a window property
          SetProp(hLinkStc, 'LinkFontHover', LinkFontHover);
        end;
        SendMessage(hLinkStc, WM_SETFONT, Integer(LinkFontHover), Integer(true));
      end;
    WM_MOUSEMOVE:
      if not WindowHover then
      begin
        // save state
        WindowHover := True;
        LinkFontNonHover := GetProp(hLinkStc, 'LinkFontNonHover');
        if LinkFontNonHover = 0 then
        begin
        // create and set font
          LinkFontNonHover := CreateFont(-MulDiv(LINKFONTSIZE, GetDeviceCaps(GetDC(hLinkStc), LOGPIXELSY), 72), 0, 0, 0,
            400, 0, 1, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH,
            LINKFONTNAME);
          // save the handle as a window property
          SetProp(hLinkStc, 'LinkFontNonHover', LinkFontNonHover);
        end;
        SendMessage(hLinkStc, WM_SETFONT, Integer(LinkFontNonHover), Integer(true));
        // track WM_MOUSELEAVE
        EventTrack.cbSize := SizeOf(EventTrack);
        EventTrack.dwFlags := TME_LEAVE;
        EventTrack.hwndTrack := hLinkStc;
        EventTrack.dwHoverTime := HOVER_DEFAULT;
        TrackMouseEvent(EventTrack);
      end;
Wenn man jetzt noch die Literale als Konstanten deklariert, hat man sogar die Namen der Properties definitiv nur einmal in der EXE/DLL/wasauchimmer.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 23:17 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