AGB  ·  Datenschutz  ·  Impressum  







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

Merkwürdiger TFontDialog

Ein Thema von Ghostwalker · begonnen am 4. Apr 2018 · letzter Beitrag vom 6. Apr 2018
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: Merkwürdiger TFontDialog

  Alt 4. Apr 2018, 22:36
Bevor ich wieder mit Kanonen auf Spatzen schieße, ich kenne TFontDialog noch nicht aber ich weiß wie ich alle registrierten Fonts in eine Auswahl-Box bekomme, falls das helfen kann pieps einmal.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#12

AW: Merkwürdiger TFontDialog

  Alt 5. Apr 2018, 06:10
An welcher Stelle kommt denn die Exception im Execute? Wie sieht der Stacktrace dazu aus?
An welcher Stelle im Execute kann ich nicht sagen, da in der Starter keine Sourcen da sind

Ich hab mal einige weitere Tests gemacht:

1. Extra Testprogrämmchen -> TFontDialog drauf -> Button drauf -> funktioniert
2. Extra Testprogrämmchen -> Button drauf -> funktion reinkopiert -> funktioniert.

Ok...das Problem tritt also nur im Haupprojekt auf. Also dacht ich, ok...vielleicht ein Resourcen/Speicherpropblem.

Hab dann das Programm außerhalb der IDE gestartet -> Der TFontdialog funktioniert !!!

Das problem tritt also nur im Projekt innerhalb der IDE auf. was das ganze noch merkwürdiger macht.

@MichaelT

Der Kommentar bezieht sich auf die zusätzlichen Style-Utils, die ich aber hier nicht verwende.

@KodeZwerg

Wenn alle Stricke reisen muss ich mir da wohl einen eigenen Font-Dialog bauen. Ich hatte eigentlich
gehofft, das vermeiden zu können.
Uwe
e=mc² or energy = milk * coffee²

Geändert von Ghostwalker ( 5. Apr 2018 um 06:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.586 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Merkwürdiger TFontDialog

  Alt 5. Apr 2018, 09:55
An welcher Stelle im Execute kann ich nicht sagen, da in der Starter keine Sourcen da sind
Das nicht, aber wenn du dort anhältst, solltest du eine Fehlerposition im Assemblercode und mit aktivierten Debug-DCUs auch einen passablen Stacktrace bekommen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#14

AW: Merkwürdiger TFontDialog

  Alt 5. Apr 2018, 10:33
Ist's ein Konsolen-, VCL- oder sonst ein Projekt? Und wann im Ablauf wird die Funktion aufgerufen? Ich hatte mal das Problem, dass ich einen OpenDialog vorm Anzeigen der MainForm gebraucht habe. Da musste ich irgendwas mit CoInitialize oder uses ComObj rumtricksen. KA, wieweit das den FontDialog betrifft.
Uli Gerhardt
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#15

AW: Merkwürdiger TFontDialog

  Alt 5. Apr 2018, 10:49
Callstack:
Code:
:529ad236 ; C:\WINDOWS\SysWOW64\fms.dll
:529b5e2e ; C:\WINDOWS\SysWOW64\fms.dll
:529ac9f4 ; C:\WINDOWS\SysWOW64\fms.dll
:529abfc4 ; C:\WINDOWS\SysWOW64\fms.dll
:529abead ; C:\WINDOWS\SysWOW64\fms.dll
:529abe3d ; C:\WINDOWS\SysWOW64\fms.dll
:529abab4 ; C:\WINDOWS\SysWOW64\fms.dll
:529ab942 ; C:\WINDOWS\SysWOW64\fms.dll
:529a85bc ; C:\WINDOWS\SysWOW64\fms.dll
:529a84bd ; C:\WINDOWS\SysWOW64\fms.dll
:529b287e ; C:\WINDOWS\SysWOW64\fms.dll
:77aee904 ; C:\WINDOWS\SysWOW64\comdlg32.dll
:77aaefe6 ; C:\WINDOWS\SysWOW64\comdlg32.dll
:77aaeef0 comdlg32.ChooseFontW + 0x40
:00559d47 TCommonDialog.TaskModalDialog + $5B
:0055a494 TFontDialog.Execute + $184
:00559be8 TCommonDialog.Execute + $38
devvst.TForm9.Button5Click($7FDC9810)
:005298c1 TControl.Click + $79
:0052df38 TWinControl.WndProc + $640
:00545905 TButtonControl.WndProc + $71
:0052e09c DoControlMsg + $28
:0052df38 TWinControl.WndProc + $640
:0052d503 TWinControl.MainWndProc + $2F
:004c865a StdWndProc + $16
:75a6e0bb USER32.AddClipboardFormatListener + 0x4b
:75a78849 ; C:\WINDOWS\SysWOW64\USER32.dll
:75a7b145 ; C:\WINDOWS\SysWOW64\USER32.dll
:75a7a89c ; C:\WINDOWS\SysWOW64\USER32.dll
:75a5b95b USER32.SendMessageW + 0x5b
:72036934 ; C:\WINDOWS\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.16299.309_none_5d7d0b9ba7da9417\COMCTL32.dll
:7204c14b ; C:\WINDOWS\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.16299.309_none_5d7d0b9ba7da9417\COMCTL32.dll
:75a6e0bb USER32.AddClipboardFormatListener + 0x4b
:75a78849 ; C:\WINDOWS\SysWOW64\USER32.dll
:75a7b145 ; C:\WINDOWS\SysWOW64\USER32.dll
:75a7833a ; C:\WINDOWS\SysWOW64\USER32.dll
:75a5fbab USER32.CallWindowProcW + 0x1b
:0052e047 TWinControl.DefaultHandler + $EB
:0052df38 TWinControl.WndProc + $640
:00545905 TButtonControl.WndProc + $71
:004c865a StdWndProc + $16
:75a6e0bb USER32.AddClipboardFormatListener + 0x4b
:75a78849 ; C:\WINDOWS\SysWOW64\USER32.dll
:75a7b145 ; C:\WINDOWS\SysWOW64\USER32.dll
:75a690dc ; C:\WINDOWS\SysWOW64\USER32.dll
:75a68c20 USER32.DispatchMessageW + 0x10
:005df964 TApplication.ProcessMessage + $F8
CPU:
Zitat:
529AD236 663978FC cmp [eax-$04],di
529AD23A 7525 jnz $529ad261
529AD23C 668B48FE mov cx,[eax-$02]
529AD240 8AF1 mov dh,cl
529AD242 8AD5 mov dl,ch
529AD244 0FB7DA movzx ebx,dx
529AD247 83FB01 cmp ebx,$01
529AD24A 0F85EC000000 jnz $529ad33c
529AD250 0FB710 movzx edx,[eax]
529AD253 8B4DF0 mov ecx,[ebp-$10]
529AD256 2355F4 and edx,[ebp-$0c]
529AD259 234DF4 and ecx,[ebp-$0c]
529AD25C 663BD1 cmp dx,cx
529AD25F 741C jz $529ad27d
529AD261 83C00C add eax,$0c
529AD264 83EE01 sub esi,$01
529AD267 75CD jnz $529ad236
529AD269 3975FC cmp [ebp-$04],esi
529AD26C 0F8496900000 jz $529b6308
529AD272 33C0 xor eax,eax
Wobei er im Quelltext beim Routinen-Aufruf steht.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: Merkwürdiger TFontDialog

  Alt 5. Apr 2018, 10:52
Ist's ein Konsolen-, VCL- oder sonst ein Projekt? Und wann im Ablauf wird die Funktion aufgerufen? Ich hatte mal das Problem, dass ich einen OpenDialog vorm Anzeigen der MainForm gebraucht habe. Da musste ich irgendwas mit CoInitialize oder uses ComObj rumtricksen. KA, wieweit das den FontDialog betrifft.
Normales VCL-Projekt, wird bei einem Button-Click ausgeführt. Es ist also alles bereits am Laufen
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#17

AW: Merkwürdiger TFontDialog

  Alt 5. Apr 2018, 11:06
Normales VCL-Projekt, wird bei einem Button-Click ausgeführt. Es ist also alles bereits am Laufen
Was du wieder für Zeug findest.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: Merkwürdiger TFontDialog

  Alt 5. Apr 2018, 11:23
Da ich vorgegebene Dialoge meist eh meide, hier kleine Schnippsel zum selber basteln.

Delphi-Quellcode:
// Style der Listbox sollte lbOwnerDrawVariable sein damit jeder Eintrag eine eigene Schrift hat

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
 With ListBox1 do
 begin
   canvas.fillrect(rect);
   canvas.font.Style := [fsbold];
   canvas.font.Name := Listbox1.items[index];
   canvas.textout(rect.left,rect.top, Listbox1.items[index]);
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ListBox1.Items := Screen.Fonts;
end;

procedure TForm1.ListBox1Change(Sender: TObject);
begin
  Label1.Font.Name := ListBox1.Items[ListBox1.ItemIndex];
end;
Zweite Variante wo man selbst per Callback durchiteriert.

Delphi-Quellcode:
function EnumFontClBack(var lp:TEnumLogFont;
                      var tm: TNewTextMetric;
                      dwType:DWord;
                      lpData:LParam): integer; stdcall;
begin
  result:=1;
  with TForm1(lpData),Combobox1 do
  begin
    items.add(lp.elfLogFont.lfFaceName);
  end;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  EnumFontFamilies(canvas.Handle,nil,@EnumFontClBack,Integer(self));
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
 Label1.Font.Name:=Combobox1.Text;
end;
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#19

AW: Merkwürdiger TFontDialog

  Alt 5. Apr 2018, 11:39
Oh je, das ist ein wenig OT, aber ich würde gerne eine Lanze für "vorgefertigte Dialoge" brechen: Die Dinger gibt es, damit sich Anwender nicht in jedem Programm an neue Dialoge für das gleiche Ding gewöhnen müssen. Ausserdem muß auch der Entwickler nicht bei jeder Änderung an diesem Ding (die selbstverständlich bei jedem OS-Update oder auch jedem Sprach-Update geschehen können) um ein eventuell anfallendes Redesign kümmern. Es ist Merkmal eines jeden guten Frameworks diese Arbeit abzunehmen, damit der Entwickler sich auf das eigentliche Rad konzentrieren kann, daß er da erfinden möchte, und nicht alle anderen bereits erfundenen Räder dutzendfach neuinterpretiert.

Sorry Daniel, das musste sein.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#20

AW: Merkwürdiger TFontDialog

  Alt 5. Apr 2018, 11:49
Da es in der VCL knallt, würde ich auch mal die Debug-DCUs in den Projektoptionen aktivieren ... dann sieht man im Debugger auch ein Bissl mehr.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 05:36 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