![]() |
Dialog wird an falscher Stelle angezeigt
Delphi-Quellcode:
Mit diesem Code kann man einen Dialog mit den neuesten Features anzeigen...
function OpenSaveFileDialog(ParentHandle: THandle; const DefExt, Filter, InitialDir, Title: string; var FileName: string; IsOpenDialog: Boolean): Boolean;
var ofn: TOpenFileName; szFile: array[0..MAX_PATH] of Char; begin Result := False; FillChar(ofn, SizeOf(TOpenFileName), 0); with ofn do begin lStructSize := SizeOf(TOpenFileName); hwndOwner := ParentHandle; lpstrFile := szFile; nMaxFile := SizeOf(szFile); if (Title <> '') then lpstrTitle := PChar(Title); if (InitialDir <> '') then lpstrInitialDir := PChar(InitialDir); StrPCopy(lpstrFile, FileName); lpstrFilter := PChar(CharReplace(Filter, '|', #0)+#0#0); if DefExt <> '' then lpstrDefExt := PChar(DefExt); end; if IsOpenDialog then begin if GetOpenFileName(ofn) then begin Result := True; FileName := StrPas(szFile); end; end else begin if GetSaveFileName(ofn) then begin Result := True; FileName := StrPas(szFile); end; end end; Leider wird der Dialog ganz unten rechts und nicht in der Mitte angezeigt :( Wie kann ich erreichen, dass er in der Mitte gezeigt wird? |
Re: Dialog wird an falscher Stelle angezeigt
Hi!
Ich wollte deinen Code mal testen, werde allerdings mit Fehlermeldungen überhäuft. Was muss noch in die Uses? Zitat:
|
Re: Dialog wird an falscher Stelle angezeigt
Delphi-Quellcode:
mfG
uses Windows, Messages
mirage228 |
Re: Dialog wird an falscher Stelle angezeigt
Liste der Anhänge anzeigen (Anzahl: 1)
HI!
@Mirage228: Gehts dann bei dir? Die 2 sind nämlich drin und es geht nicht. Ich häng meine Pas mal an. Ciao fkerber |
Re: Dialog wird an falscher Stelle angezeigt
Ähm, sorry!
Es muss die Unit "CommDlg" sein. (Wie in Luckies Win32API Tuts beschrieben, Seite 43 ff.) Ausserdem habe ich die Funktion CharReplace nicht, ich habe sie durch StringReplace ersetzt. mfG mirage228 |
Re: Dialog wird an falscher Stelle angezeigt
Hi!
Danke für die Antwort @mirage. @Kinimod: Bei mir wird der Dialog schön in der Mitte angezeigt, so wie es wohl sein sollte. Ciao fkerber |
Re: Dialog wird an falscher Stelle angezeigt
Ist ja komisch...
Bei mir gehts nicht so :( |
Re: Dialog wird an falscher Stelle angezeigt
Oops :oops:
ich habe ein wenig vom Code weggelassen... Vollständig ![]() Hilft aber trotzdem nicht weiter :wall: |
Re: Dialog wird an falscher Stelle angezeigt
Moin, ah N´abend
Also, würde mal bei Borland schauen ob es für D3 dort Updates gibt. Das scheint doch was mit der internen Organisation zu tun haben. Sonst kannst Du nur über das Windows-Handle die Position des Dialogs neu setzen. Grüße // Martin |
Re: Dialog wird an falscher Stelle angezeigt
Zitat:
|
Re: Dialog wird an falscher Stelle angezeigt
Hi!
Dann pack doch mal den Dialog in eine neues Prjekt und schau mal, ob es an dem Code an sich liegt oder nur ein Problem bei deinem aktuellen Programm ist. Ciao fkerber |
Re: Dialog wird an falscher Stelle angezeigt
Habe ich schon lange... Tritt immer auf... :x
|
Re: Dialog wird an falscher Stelle angezeigt
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe eine Idee: Vieleicht ist das ganze System-abhängig?
Ich habe mal eine .exe. Vieleicht könnt ihr mal gucken, ob es bei euch dann auch unten rechts ist... |
Re: Dialog wird an falscher Stelle angezeigt
hi Kinimod8
ich hab zwar keine ahnung wie du dein problem los wirst, aber ich hab mir schnell dein projekt angesehn. - erster aufruf des dialogs -> unten rechts - weiter aufrufe -> immer dort wo ich den dialog zuvor hingeschoben habe mein system: - xp prof, sp1 - P4 2.6 - 512 MB DDR vielleicht hilfts dir ja. gruss, dave |
Re: Dialog wird an falscher Stelle angezeigt
HI!
Ja kommt tatsächlich beim ersten Mal unten rechts. Kannst du mal den Source anhängen? Vielleicht liegt es ja am kompilierenden Rechner? Ciao fkerber |
Re: Dialog wird an falscher Stelle angezeigt
Liste der Anhänge anzeigen (Anzahl: 1)
Hier der Source:
|
Re: Dialog wird an falscher Stelle angezeigt
hi
habs bei mir mal kompiliert aber mit dem gleichen resultat wie schon beschrieben... gruss, dave //EDIT: mit fkerber's lösung gehts auch bei mir... |
Re: Dialog wird an falscher Stelle angezeigt
Hi!
Habe den "Fehler":
Delphi-Quellcode:
Mach den Aufruf so. Der Unterschied:
if OpenSaveFileDialog(Form1.Handle, 'txt', 'Text Files|*.txt', 'c:\',
'Select text file', s, True) Statt application.Handle Form1.Handle. Dann geht es bei mir. Ciao fkerber |
Re: Dialog wird an falscher Stelle angezeigt
Jiippii! Es geht!
Ich habe jetzt aber noch ein weiteres Problem, was sich aus der Lösung resultiert: Ich habe eine Kompo geschrieben, die das Einbinden dieses Dialoges vereinfacht. Nun kann ich schlecht in die Execute-Funktion Form1.Handle reinschreiben... Gibt es dabei ein anderes Handle, was man verwenden kann? |
Re: Dialog wird an falscher Stelle angezeigt
Hi!
Damit geht es auch:
Delphi-Quellcode:
Application.MainForm.Handle
Ciao fkerber |
Re: Dialog wird an falscher Stelle angezeigt
Leider nicht... :(
|
Re: Dialog wird an falscher Stelle angezeigt
Hi!
Also bei mir geht das 100%. Wenn ich statt application.Handle application.mainform.Handle schreibe, dann wird der Dialog mittig angezeigt, sonst unten rechts. Ciao fkerber |
Re: Dialog wird an falscher Stelle angezeigt
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal die Komponente incl. Source...
|
Re: Dialog wird an falscher Stelle angezeigt
Hi!
Wenn ich die Komponente installiere und dann aufs Form ziehe und per Execute den Dialog aufrufe ist er schön mittig, wie man es gewohnt ist. Ciao fkerber |
Re: Dialog wird an falscher Stelle angezeigt
Liste der Anhänge anzeigen (Anzahl: 1)
Hier habe ich nochmal mein Projekt. Wie sieht es bei euch aus?
|
Re: Dialog wird an falscher Stelle angezeigt
Hi!
Wenn ich das Projekt aufrufe (also das von dir kompilierte, die exe), dann erscheint er unten rechts. Kompiliere ich danach selbst nochmal ist es richtig. Hast du evtl. noch ne "alte" Version der Komponente installiert? Ciao fkerber |
Re: Dialog wird an falscher Stelle angezeigt
:party: In der Tat! Jetzt gehts! :hello:
|
Re: Dialog wird an falscher Stelle angezeigt
Hi!
Gudd! Was kann denn dieser Dialog jetzt mehr als der andere? Ciao fkerber |
Re: Dialog wird an falscher Stelle angezeigt
Er zeigt die neuesten Features an. Z.B.: die Zeile links. Bei meiner D3 wird diese sonst nicht gezeigt... :?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:01 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