ich habe hier eine Anwendung, in der PDF-Datenblätter hinterlegt werden.
Leider werden die Datenblätter nur in der Form "Artikel-Nr Bez.pdf" gespeichert. Also z.B. "150 Diesel.pdf"
So weit, so schlecht. Problem: doppelte / veralterte Datenblätter.
Jetzt möchte ich dem Anwender eine Form zur Hand geben, in der in einer Liste (Stringlist) die Artikel angezeigt werden und beim Klick auf die Zeile die zugehörige Datei geöffnet und nach dem Text "Version" gesucht wird, damit man entscheiden kann, welches Datenblatt veraltet ist.
Das ganze klappt mit Sumatra-pdf so weit ganz ok. Bis auf einen Haken: Ich öffne SumatraPDF mit
Code: Alles auswählen
PDFProcess.CommandLine := 'SumatraPDF.exe'
+ ' -plugin ' + IntToStr(PanelPDFEdit.Handle)
+ ' "' + pdfName + '"'
+ ' -search "Version"'
+ ' -view "single page"';
PDFProcess.Execute;
Andere Steuerelemente können den Focus bekommen <grmbl$%!>
Damit der Focus erstmal nicht verschwindet, habe ich mir ein Panel im Panel gebaut, um das Unterpanel nach PDFProcess.Execute; disablen zu können...
Klappt sogar. Beim Klick auf das obere Panel wird das untere enabled und man kann durchs Datenblatt scrollen. (Sind meist 8-10 Seiten)
Um zurück zu kommen, kann ein Klick auf den zurück-Button den Focus zurückholen in meine Lazarus-Welt...
Wie bekomme ich den Focus sauber ohne diese Krücken gesetzt?
BTW: PDFProcess.CommandLine is deprecated,
Code: Alles auswählen
PDFProcess.Executable := 'SumatraPDF.exe'
PDFProcess.add('-plugin ' + IntToStr(PanelPDFEdit.Handle))
Hier ein Beispiel-Standalone-Projekt ohne Datenbank, dafür mit Array... Für SumatraPDF unter Windows reicht es, die portable Version von https://www.sumatrapdfreader.org/downlo ... pdf-viewer ins Projektverzeichnis zu kopieren und den Dateinamen anzupassen. Linux???