Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dialog wird an falscher Stelle angezeigt (https://www.delphipraxis.net/17495-dialog-wird-falscher-stelle-angezeigt.html)

Kinimod8 7. Mär 2004 08:26


Dialog wird an falscher Stelle angezeigt
 
Delphi-Quellcode:
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;
Mit diesem Code kann man einen Dialog mit den neuesten Features anzeigen...

Leider wird der Dialog ganz unten rechts und nicht in der Mitte angezeigt :(
Wie kann ich erreichen, dass er in der Mitte gezeigt wird?

fkerber 7. Mär 2004 10:28

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:

Zitat von Delphi
[Fehler] Unit1.pas(38 ): Undefinierter Bezeichner: 'TOpenFileName'
[Fehler] Unit1.pas(45 ): Undefinierter Bezeichner: 'lStructSize'
[Fehler] Unit1.pas(46 ): Undefinierter Bezeichner: 'hwndOwner'
[Fehler] Unit1.pas(47 ): Undefinierter Bezeichner: 'lpstrFile'
[Fehler] Unit1.pas(48 ): Undefinierter Bezeichner: 'nMaxFile'
[Fehler] Unit1.pas(50 ): Undefinierter Bezeichner: 'lpstrTitle'
[Fehler] Unit1.pas(52 ): Undefinierter Bezeichner: 'lpstrInitialDir'
[Fehler] Unit1.pas(54 ): Undefinierter Bezeichner: 'lpstrFilter'
[Fehler] Unit1.pas(54 ): Undefinierter Bezeichner: 'CharReplace'
[Fehler] Unit1.pas(56 ): Undefinierter Bezeichner: 'lpstrDefExt'
[Fehler] Unit1.pas(60 ): Undefinierter Bezeichner: 'GetOpenFileName'
[Fehler] Unit1.pas(68 ): Undefinierter Bezeichner: 'GetSaveFileName'
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden

Ciao fkerber

mirage228 7. Mär 2004 10:40

Re: Dialog wird an falscher Stelle angezeigt
 
Delphi-Quellcode:
uses Windows, Messages
mfG
mirage228

fkerber 7. Mär 2004 10:48

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

mirage228 7. Mär 2004 11:59

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

fkerber 7. Mär 2004 12:05

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

Kinimod8 7. Mär 2004 18:07

Re: Dialog wird an falscher Stelle angezeigt
 
Ist ja komisch...

Bei mir gehts nicht so :(

Kinimod8 7. Mär 2004 18:13

Re: Dialog wird an falscher Stelle angezeigt
 
Oops :oops:
ich habe ein wenig vom Code weggelassen...

Vollständig hier

Hilft aber trotzdem nicht weiter :wall:

mschaefer 7. Mär 2004 18:21

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

Kinimod8 8. Mär 2004 06:53

Re: Dialog wird an falscher Stelle angezeigt
 
Zitat:

Zitat von mschaefer
Sonst kannst Du nur über das Windows-Handle die Position des Dialogs neu
setzen.

Und wie geht das genau :roteyes:

fkerber 8. Mär 2004 12:25

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

Kinimod8 8. Mär 2004 12:33

Re: Dialog wird an falscher Stelle angezeigt
 
Habe ich schon lange... Tritt immer auf... :x

Kinimod8 8. Mär 2004 12:39

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...

ims 8. Mär 2004 12:48

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

fkerber 8. Mär 2004 14:35

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

Kinimod8 8. Mär 2004 15:02

Re: Dialog wird an falscher Stelle angezeigt
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier der Source:

ims 8. Mär 2004 15:08

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...

fkerber 8. Mär 2004 15:09

Re: Dialog wird an falscher Stelle angezeigt
 
Hi!

Habe den "Fehler":

Delphi-Quellcode:
if OpenSaveFileDialog(Form1.Handle, 'txt', 'Text Files|*.txt', 'c:\',
    'Select text file', s, True)
Mach den Aufruf so. Der Unterschied:

Statt application.Handle Form1.Handle.

Dann geht es bei mir.


Ciao fkerber

Kinimod8 8. Mär 2004 15:18

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?

fkerber 8. Mär 2004 15:23

Re: Dialog wird an falscher Stelle angezeigt
 
Hi!

Damit geht es auch:

Delphi-Quellcode:
Application.MainForm.Handle

Ciao fkerber

Kinimod8 8. Mär 2004 15:27

Re: Dialog wird an falscher Stelle angezeigt
 
Leider nicht... :(

fkerber 8. Mär 2004 15:29

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

Kinimod8 8. Mär 2004 15:31

Re: Dialog wird an falscher Stelle angezeigt
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal die Komponente incl. Source...

fkerber 8. Mär 2004 15:39

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

Kinimod8 8. Mär 2004 15:43

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?

fkerber 8. Mär 2004 15:46

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

Kinimod8 8. Mär 2004 16:01

Re: Dialog wird an falscher Stelle angezeigt
 
:party: In der Tat! Jetzt gehts! :hello:

fkerber 8. Mär 2004 16:07

Re: Dialog wird an falscher Stelle angezeigt
 
Hi!

Gudd!

Was kann denn dieser Dialog jetzt mehr als der andere?

Ciao fkerber

Kinimod8 9. Mär 2004 08:26

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