![]() |
Übergabe von Daten an eine Callback-Funktion
Hallo zusammen.
Ich habe es mittels ![]() geschafft, dass der Ok-Button des Dialogs nur dann enabled ist, wenn in dem ausgewählten Verzeichnis eine bestimmte Datei vorhanden ist. Wie schaffe ich es nun aber, dies zu verallgemeinern - sprich, wie kann ich das Verhalten des OK-Buttons von unterschiedlichen Dateien oder sogar einer vorgegeben Menge von Dateien abhängig machen!? Was und wie muss ich der Callback-Funktion "BrowseCallbackProc" übergeben, damit ich den Dialog an verschiedenen Stellen benutzen kann? Vielen Dank für Eure Hilfe! |
AW: Übergabe von Daten an eine Callback-Funktion
Delphi-Quellcode:
prüft einen Dateinamen, also hier einfach mit OR Mehrere prüfen
if (ExtractFileName(DirName)='config') then
oder z.B. über eine TStringList und IndexOf in einer Liste nachsehn. |
AW: Übergabe von Daten an eine Callback-Funktion
Das ist mir grundsätzlich schon klar!
Ich will die Funktion "SelectFolderDialogExt" und somit ja auch "BrowseCallbackProc" von mehreren Stellen aus mit unterschiedlichen "Suchkriterien" aufrufen. Hier der Ausschnitt aus meiner veränderten "BrowseCallbackProc":
Delphi-Quellcode:
Mein Problem ist nun, wie übergebe ich den Dateinamen oder meinetwegen auch verallgemeinert eine TStringList an die Callback-Funktion, deren Paramer doch fest vorgegeben sind, oder!?
BFFM_SELCHANGED:
begin pIDL := Pointer(lParam); if Assigned(PIDL) then begin SHGetPathFromIDList(pIDL, DirName); SendMessage(hwnd, BFFM_ENABLEOK, 0, Ord(FileExists(DirName+'\bblabla.txt')); end; end; Also wie kriege ich
Delphi-Quellcode:
hin.
SendMessage(hwnd, BFFM_ENABLEOK, 0, Ord(FileExists(DirName+'\'+Dateiname));
|
AW: Übergabe von Daten an eine Callback-Funktion
Dir ist bestimmt schon der lParam/lpParam-Parameter aufgefallen, worin mal den SelectedFolder übergibt?
Darüber kann man auch ein Objekt oder einen Record-Zeiger übergeben, worin nun der SelectedFolder und deine Dateinamen drin stecken. (oder eben nur die Dateiliste und das SelectedFolder ausbauen) |
AW: Übergabe von Daten an eine Callback-Funktion
Das hab ich mir schon gedacht!
Aber wo lege ich die Parameter-Werte fest? Es gibt ja keinen direkten Funktionsaufruf. Was ich nicht verstehe, ist: wo bekommen die Parameter der Callback-Funktion ihre Werte her, also, wo werden die Werte
Delphi-Quellcode:
gesetzt/übergeben.
hwnd: HWND; MessageID: UINT; lParam: LPARAM; lpData: LPARAM
In der Struktur "TBrowseInfo" wird die Callback-Funktion zwar zugewiesen und es gibt auch ein lParam, aber das war's auch ... Irgendwo müssen die Werte doch zugewiesen werden :cry: |
AW: Übergabe von Daten an eine Callback-Funktion
Zitat:
Der Wert von dem lParam wird als lpParam an die Prozedur übergeben. PS: ![]() |
AW: Übergabe von Daten an eine Callback-Funktion
Danke, klappt!
Mir war Zitat:
Schon irgendwie seltam ... da wird aus lParam LpData ... da muss mal einer drauf kommen!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 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