Dialog Position festlegen (Bsp. OpenDialog)



  • Hallo zusammen

    Wie kann ich die Position der Dialoge auf dem Bilschirm festlegen.
    Im speziellen geht es mir um den OpenDialog sowie um den SelectDirectoryDialog(SelectDirectory("Add search path", WideString(root), dir)).

    Vielen Dank im vorraus.

    MfG Stephan



  • ähm Dialog->Left (wie weit rechts) Dialog->Top (wie weit unten)
    bsp: Left=5; Top=5; -> dialog ist 5px vom linken und 5px vom oberen rand entfernt



  • Hallo zusammen

    @Blackhawk

    Ich habe z.B. einen TOpenDialog OpenDialog1, und wenn ich da OpenDialog1->Left = 100; mache bekomme ich vom Compiler Left kein Element von TOpenDialog.
    Oder hab ich dich falsch verstanden?

    MfG STephan



  • ahso shit das ist nur bei forms... und controls (visuelle)



  • kommen die dialoge nich immer in der mitte des bildschirmes? das legt doch nahe, dass man die position nich verändern kann, sonst hätte das wohl irgendwann mal wer gemacht.
    alternativ könnte man natürlich eigene dialoge bauen (ein form mit den entsprechenden schaltflächen), die dann beliebig angezeigt werden können.



  • Hallo zusammen

    @Blackshadow
    Also die "normalen" (Open-, Close Dialog usw) kommen in der Mitte. Damit kann ich auch gut leben, allerdings der SelectDirectoryDialog kommt immer relativ weit rechts unten, und diesen hätte ich gerne besser in der Mitte.
    Einen eigene Dialog für die Verzeichnisse zu bauen wäre mir momentan zu viel aufwand.

    MfG Stephan



  • Wahrscheinlich geht das über die WinAPI und die Eigenschaft Handle.
    Vielleicht hilft die Funktion SetWindowPos. Für derartige Funktionen findest Du aber wahrscheinlich im WinAPI-Forum
    eher jemanden, der sich damit auskennt.

    Gruß,

    Alexander



  • Dieser Thread wurde von Moderator/in KlausB aus dem Forum Borland C++ Builder (VCL/CLX) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • War ja klar, wenn die BCB-VCL Klassen keinen -> für die gewünschten Funktionen hat, gehts ab ins WinAPI Forum. Naja, hier sind ja auch ware Progger und keine Klick->Klick->Run() Warmduscher.

    Wenn du SelectDirectory() aufrufst, wird dein Programm angehalten bis die Dialogbox geschlossen wird.
    Also mußt du vor Aufruf einen Thread starten, der das Bewerkstelligt.

    Z.B. hat dein Select....Dialog den Titel "Ordner suchen"

    int top,left,ow,oh;
    RECT rc;
    top = 120; // neuen Abstand von oben
    left = 300; // neuen Abstand von links
    HWND sdh = FindWindow("#32770","Ordner suchen");
    if (sdh != NULL) {
       if (GetWindowRect(sdh,&rc)) {
          ow = rc.right - rc.left;
          oh = rc.bottom - rc.top;
          MoveWindow(sdh,left,top,ow,oh,true);
       }
    }
    

    Wie gesagt, das muß in einem Thread gepackt sein.

    Ich bin mir nicht mehr genau sicher das #32770 der Classen_Name von SelectDirectory ist, aber das kann man ja auch mit Spy++, Winspector oder so rausbekommen.

    gruß



  • WinAPI schrieb:

    War ja klar, wenn die BCB-VCL Klassen keinen -> für die gewünschten Funktionen hat, gehts ab ins WinAPI Forum.

    ?? Genau dafür gibt es doch die spezifischen Foren!

    WinAPI schrieb:

    Naja, hier sind ja auch ware Progger und keine Klick->Klick->Run() Warmduscher.

    Im BCB-Forum tummeln sich nur deutlich mehr Anfänger. Verständlicherweise. 😉


Log in to reply