Autor Beitrag
Netizen-1962
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Fr 11.10.02 23:17 
Moin moin,

ich schreibe gerade an einem Programm. Wenn der User einen Ordner aus der ShellTreeView auswählt, dann soll der Inhalt des Ordners in eine CheckListBox geschrieben werden (ich brauche die Häkchen, deshalb benutze ich keine ShellListView). Dazu habe ich u.a. einen Befehl benutzen müssen, den ich aus einem anderen Quelltext übernommen habe (GEDANKENKLAU ;-) ):


SendMessage(ListBox.Handle,LB_DIR,DDL_DIRECTORY,lParam(PChar
----
(Pfad+StringOfChar('\',ord(AnsiLastChar(Pfad) <> '\'))+'*.*')));


Der untere, abgetrennte Teil ist mir soweit eigentlich klar, nur den Teil davor verstehe ich nicht ganz und die Dokumentation in Delphi ist an dieser Stelle etwas unverständlich.

Könnte mir jemand sagen, wofür die Befehle im oberen Teil so ungefähr stehen ? Danke für Eure Mühen und schoenes Wochenende noch !

Mfg
Joerg
:wink:
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Fr 11.10.02 23:43 
SendMessage ist eine Funktion die Messages versendet.

ListBox.Handle ist das Fenster an das die Message gesendet wird

LB_DIR ist die Message (Die Botschaft LB_DIR fügt eine Dateiliste an das Listen-Fenster an)

DDL_DIRECTORY ist der erste (von zwei) Parameter der mitgeschickt wird (DDL_DIRECTORY - Name, auf den der Parameter lpszFileSpec zeigt, gibt ein Verzeichnis an)

lParam(PChar... - ist ein Teil von dem zweiten Parameter



Zitat:
function SendMessage(Wnd: HWnd; Msg, wParam: Word; lParam: LongInt): LongInt;

Die Funktion SendMessage sendet eine Meldung an ein oder mehrere angegebene Fenster.

SendMessage kehrt solange nicht zurück, bis die Meldung verarbeitet wurde. Die Funktion ruft die Fensterprozedur für das Fenster auf und kehrt solange nicht zurück, bis die Meldung verarbeitet wurde. Die Meldung wird, im Gegensatz zu der Funktion PostMessage, nicht in der Warteschlange plaziert.

Parameter Beschreibung

Wnd - Bezeichnet das Fenster, das die Meldung empfangen soll. Wenn der Parameter HWND_BROADCAST ist, dann wird die Meldung an alle Pop-Up-Fenster im System übergeben, ebenso an inaktive oder unsichtbare, besitzerlose Fenster.

Msg - Bestimmt die zu sendende Meldung.

wParam - Bestimmt 16 Bits zusätzlicher, meldungsabhängiger Information.

lParam - Bestimmt 32 Bits zusätzlicher, meldungsabhängiger Information.

Rückgabewert

Der Rückgabewert ist der Wert, der von der Fensterfunktion, die die Meldung empfangen hat, zurückgegeben wird. Er hängt somit von der gesendeten Meldung ab.

Hinweis

Wenn die Meldung an eine andere Anwendung gesendet wird, und in den Parametern wParam oder IParam Handles oder Zeiger auf globalen Speicher übergeben werden, sollte der Speicher mit der Funktion GlobalAlloc und gesetztem GMEM_SHARE-Flag angefordert werden.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 12.10.02 09:01 
Netizen-1962 hat folgendes geschrieben:
ich brauche die Häkchen, deshalb benutze ich keine ShellListView

Die normale ListView kennt doch aber die Häkchen, und IMHO geht die ShellListview auch nur auf die normale LV zurück, benutzt aber ein Shell-Interface zur Anzeige der Ordnerinhalte. Müsste es daher nicht auch eine Option wie "CheckBoxes" geben?
Netizen-1962 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Sa 12.10.02 09:56 
Titel: Re: Postings
Hallo,
danke erstmal für die schnellen Antworten !

@ MathiasSimmack:
Zumindest gibt es eine solche Funktion nicht im Objektinspektor... Und die CheckListBox soll auch ein wenig stabiler laufen als die Shells !?

Schoenen Tag noch :o
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 12.10.02 10:51 
Na ja, ich arbeite mit Delphi 5, da gibt es die ShellListView noch nicht. Ich hätte dir auch gern ein entsprechendes Kapitel aus dem PSDK angeboten, aber irgendwie finde ich es nicht mehr. Die Version vom August sieht zwar schön aus, ist aber irgendwie extrem unübersichtlich geworden - Indextopics sind verschwunden ...

Gefunden habe ich die Eigenschaft trotzdem: "LVS_EX_CHECKBOXES". Zu setzen mit der Message LVM_SETEXTENDEDLISTVIEWSTYLE (SendMessage), bzw. mit der Funktion "ListView_SetExtendedListViewStyleEx" (sofern vorhanden).

Da du ja eine neuere Delphi-Version zu haben scheinst, probier doch mal bitte folgendes aus:
Starte ein neues Projekt und packe eine ShellListView auf das Formular. Stell sie auf "vsReport" (oder wie immer das dort heißt), und dann ergänzt du im "OnCreate" der Form einfach mal diese Anweisung:
ausblenden Quelltext
1:
2:
3:
SendMessage(ShellListView1.Handle,LVM_SETEXTENDEDLISTVIEWSTYLE,0,
  SendMessage(ShellListView1.Handle,LVM_GETEXTENDEDLISTVIEWSTYLE,0,0) OR
  LVS_EX_CHECKBOXES);

Keine Sorge, dabei geht nichts kaputt. Es wird einfach der erweiterte Stil mit den Checkboxen gesetzt (bzw. es wird versucht ihn zu setzen), und damit die anderen Einstellungen der SLV erhalten bleiben, werden die natürlich vorher ausgelesen.

Es würde mich mal interessieren, ob die Checkboxen dann zu sehen sind, oder ob die ShellListview vielleicht doch anders funktioniert.

Gruß,
Mathias.

PS:
ausblenden Quelltext
1:
2:
uses
  CommCtrl;

wird wahrscheinlich noch erforderlich sein, sonst kann das Programm mit den ListView-Nachrichten und -Stilen nicht viel anfangen.
Netizen-1962 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Sa 12.10.02 14:56 
Titel: ShellListView
Moin,

das funktioniert leider nicht: Delphi rückt mit diesem Befehl zwar die Einträge in der ShellListView ein, Checkboxes werden aber nicht eingeblendet...
Vielleicht nur eine kleine Änderung die nötig ist ?! Wenn ich was rausfinde sag ich Bescheid.

Bis dann
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: So 13.10.02 21:57 
Titel: komisch
komisch ich hatte
ShellListView1.Items[0].Checked:=True;
gemacht und es wurde keine Checkbox angezeigt vieleicht gibt es ne eigenschaft.
Selbst als ich ShellListView1.Items[0].Caption gemacht hatte wurde mir nur ein wahr der inhalt von Caption '' ich verstehe das nicht !

brauchst du überhaupt noch hilfe :?: :?:

MFG
mimi
Netizen-1962 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mo 14.10.02 10:04 
Titel: Re: Hilfe
Moin,

soweit kann ich - wie geschrieben - auch die CheckListBox benutzen, nur mit der ShellListView und den CheckBoxes bin ich nicht weitergekommen und es hätte mich natürlich mal interessiert...

Bis dann
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 14.10.02 10:37 
Was, du konntest das Posting von mimi verstehen?
Ich überlege schon seit früh, was das für eine Sprache sein soll. Es sieht zwar wie Deutsch aus, aber den zweiten Satz kapiere ich überhaupt nicht.

Aber mal im Ernst -
Vielleicht wäre es hilfreich, wenn sich einige Leute mal Zeit zum Posten nehmen? Wer Angst hat, dass sich ein anderer dazwischendrängelt, kann ja die Zitatfunktion verwenden. Und die meisten Missverständnisse beruhen darauf, dass einige Leute ihre Postings hier einfach so hinschludern.

Das Argument "Ich schreibe was ich denke" oder (noch schlimmer) "Ich schreibe wie ich denke" möchte ich hier jetzt nicht lesen - das würde mich irgendwie beunruhigen ... :twisted:

:wink: