openDialog nicht in Bildschirmmitte

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
elcomportal
Beiträge: 13
Registriert: Fr 11. Mai 2012, 21:06
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

openDialog nicht in Bildschirmmitte

Beitrag von elcomportal »

Hallo,
ich programmiere eine kleine Anwendung, die auf einem kleinen Industrie-Touchpanel-PC ausgeführt wird (Win XP embedded) Die Auflösung ist 800 x 600 Pixel. Der normale OpenDialog ist sehr groß. Erstens müßte der kleiner und zweitens darf der nicht in der Bildschirmmitte hin, weil sonst die virtuelle Tastatur nicht hinpasst. Wie kann ich das hinkriegen? Für die Position finde ich keine Eigenschaften und auf die Height Eigenschaft reagiert das nicht. Der Dialog bleibt immer so groß.
Mfg
Torsten
www.singleboerse-tipp.de - kostenloser Vergleich von Singlebörsen und Partnerbörsen

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Re: openDialog nicht in Bildschirmmitte

Beitrag von theo »

So einfach geht das afaik nicht, ist aber kein Lazarus Problem.
Vllt. kannst du unter Windows was mit FindWindow und SetWindowPos machen. S.a.
http://stackoverflow.com/questions/1256 ... filedialog" onclick="window.open(this.href);return false;

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: openDialog nicht in Bildschirmmitte

Beitrag von carli »

elcomportal hat geschrieben:Hallo,
ich programmiere eine kleine Anwendung, die auf einem kleinen Industrie-Touchpanel-PC ausgeführt wird (Win XP embedded) Die Auflösung ist 800 x 600 Pixel.
Das ist so ein spezielles Anwendungsgebiet, dass es sich vielleicht sogar lohnen würde, einen eigenen OpenDialog zu implementieren (es sei denn, man will das XP-look'nFeel behalten)

elcomportal
Beiträge: 13
Registriert: Fr 11. Mai 2012, 21:06
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: openDialog nicht in Bildschirmmitte

Beitrag von elcomportal »

Hmm, an einen eigenen Dialog hatte ich auch schon gedacht, aber irgendwie kriege ich die Verzeichnisauswahl nicht hin. Der Baum wird angezeigt, aber wie komme ich wieder eine Ebene höher? XP-Look muss nicht unbedingt sein, aber ganz so altbacken wie Win 3.1 wäre auch nicht so gut. Einen eigenen Dialog wäre gut, aber da bräuchte ich mal etwas Hilfe. Es muss ja kein eigenes Dialogfenster sein. Ichkann das ja in die Mainform einbauen.
VG
Torsten
www.singleboerse-tipp.de - kostenloser Vergleich von Singlebörsen und Partnerbörsen

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: openDialog nicht in Bildschirmmitte

Beitrag von MAC »

Nimm ein ShellTreeView und mach folgendes;
Die Funktion ist bis jetzt auf Windows beschränkt (weil wenn nur 1 Node da ist, dann ist das das C: , D: , ... Verzeichnis. Da muss aber noch ein "/" angehängt werden, bei Linux muss zum "\" verzeichnis kein weiteres "\" angehängt werden...)
Funktion kannst du verwenden wie du willst :)

Code: Alles auswählen

function Getfullpath(aNode:TTreeNode):string;
var
  par:TTreeNode;
begin
if aNode = nil then exit;
result := aNode.Text;
par := aNode.Parent;
if not assigned(par) then result += PathDelim;
while par <> nil do
      begin
      result := par.Text + PathDelim + result;
      par := par.Parent;
      end;
end;

Code: Alles auswählen

Signatur := nil;

elcomportal
Beiträge: 13
Registriert: Fr 11. Mai 2012, 21:06
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: openDialog nicht in Bildschirmmitte

Beitrag von elcomportal »

Hi,
danke! ShellTreeView ist das was ich brauche. Dann baue ich in mein Formular direkt den OpenDialog ein. Ohne extra Fenster. Aber die Funktion, was bewirkt die und wie muss ich das aufrufen?
Danke.
VG
Torsten
www.singleboerse-tipp.de - kostenloser Vergleich von Singlebörsen und Partnerbörsen

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: openDialog nicht in Bildschirmmitte

Beitrag von MAC »

Naja, wenn du dir nen Shellview anschaust siehst du das ein Eintrag zum Beispiel
Test heißt.
Wählt der Mensch aber Test aus so meint er nicht den Pfad"Test" sondern "C:/Hierstehtwas/Test". "Test" ist nur der Namen des untersten Eintrag.
Die Funktion gibt dir einfach den Gesamtpfad an von dem Node den du wissen willst.

Code: Alles auswählen

Signatur := nil;

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: openDialog nicht in Bildschirmmitte

Beitrag von Antrepolit »

elcomportal hat geschrieben:Hallo,
(...) Der normale OpenDialog ist sehr groß. Erstens müßte der kleiner und zweitens darf der nicht in der Bildschirmmitte hin, weil sonst die virtuelle Tastatur nicht hinpasst. Wie kann ich das hinkriegen? (...)
Das ist echt ein Problem unter XP. Windows Vista und 7 haben diese Adressleiste mit den "Klickbuttons". Da ich unter XP diese vermisste, habe ich sie als Frame implementiert. Die könnte bei der Implementierung eines kleineren Dialogs ehr nützlich sein, wenn man sie mit einer ShellTreeView kombiniert (habe ich so gemacht). Du bekommst den Dialog kleiner, ohne Navigationsmöglichkeiten zu verlieren. Im Großen und Ganzen erfüllt meine Komponente PathBarFrame die Funktion wie erwartet. Wenn du daran interessiert bist, hänge ich den Quelltext an.
Grüße, Antrepolit

care only if your os is really burning

Antworten