1Danke
ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
1803
1803
EMPFEHLEN
-
19.02.08 16:35 #1
- Registriert seit
- Aug 2007
- Beiträge
- 20
Hi
Ich habe volgendes Problem, und zwar würde ich gerne eine ComboBox mit Datein, Automatisch, also wenn eine dazu kommt, das die auch geaddet wird, fühlen.
Ich habe da zwar einen Befehl gefunden, aber irgenwie weis ich nicht, was der von mir erwartet
Was muss ich da hinten dran schreiben, das es funtzt?Code :1
ComboBox1.GetNamePath
Also vorstellen, tu ich mir das so wie in einer FileListBox
Danke im Voraus
MfG
Power-Poler
-
20.02.08 08:23 #2
- Registriert seit
- Mar 2004
- Beiträge
- 441
Also ich sage mal ganz blauäugig: Mit GetNamePath kommst du schon mal gar nicht weiter. Ich habe eine ähnliche Funktion hier in meinem Projekt, die ich mal etwas umgeschrieben und kommentiert habe. Ich sollte noch anmerken, dass das Ganze für Delphi .net ist und für reines Delphi w32 evtl. die Methodenparameter angepasst werden müssen.
Code delphi:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
procedure TIrgendeineKlasse.GetAvailableFiles(pComboBox: TComboBox); var lDir: String; // Startverzeichnis für die Filesuche lSearchRecord: TSearchRec; // zum Suchen selbst begin // Wenn ich schon nach den verfügbaren Dateien suche, dann will ich aber // keine doppelten Einträge von vorherigen Dateisuchen pCombobox.Clear; // Ich suche nur im gleichen Verzeichnis, in dem auch die EXE meines // Programms läuft lDir := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)); // Existiert überhaupt irgendeine Datei im gewünschten Format? // (hier eine EXE-Datei). if FindFirst(lDir + '*.exe', faAnyFile, lSearchRecord) = 0 then begin repeat if (lSearchRecord.Attr <> faDirectory) then pComboBox.Items.Add(lSearchRecord.Name); until FindNext(lSearchRecord) <> 0; // Suche abschliessen FindClose(lSearchRecord); end; end;
Aber jetzt kommt es natürlich vollkommen darauf an, wann die Methode aufgerufen wird. Du willst ja, dass sich die Combobox quasi "von selbst" aktualisiert. Aber dieses "von selbst" sollte schon etwas genauer bestimmt sein.
Eine Möglichkeit ist, die Application.OnIdle zu überschreiben (Suchworte: +Delphi +OnIdle) und innerhalb der neuen OnIdle die Methode auszuführen. Dann würde deine Combobox immer dann aktualisiert werden, wenn dein Programm gerade nichts zu tun hat. Klassischesr Einsatz: Aktualisierung eines Statusbars.
Alternativ (wenn die Aktualisierung deiner ComboBox wirklich richtig dringend und wichtig ist) lassen sich auch speziell für diesen Task Resourcen verbraten und ein Timer einsetzen. (Suchworte: +Delphi +TTimer). Einfach obige Routine in die Ereignismethode des Timers packen und schon kannst du bestimmen wann und wo nach neuen Methoden gesucht wird.
Klassischer Einsatz: Timer zum automatischen Logout nach einer gewissen Inaktivität bei einem Usermanagement.
Als weitere Möglichkeit fiele mir noch die OnDraw-Methode des der ComboBox übergeordneten Formulars ein. Da ist aber u.U. ein bißchen Gebastel notwendig, damit es zu keiner Null Pointer-Exveption kommt (Create, FreeAndNil).
Klassischer Einsatz: Alles mögliche, was auf dem Formular angezeigt wird. Ist fast so etwas wie eine Standard-Refresh-Art.
Ich persönlich würde in diesem Falle wohl die OnIdle-Methode verwenden.
-
20.02.08 16:07 #3
- Registriert seit
- Aug 2007
- Beiträge
- 20
Hi
Danke für die Antwort, es geht!
Ich möchte jetzt aber gerne, das er nicht da sucht, wo die exe ist, sondern in einem Vorgegebenen Order, wo muss ich das dan hineinschreiben?
Villeicht ist die lösung ganz einfach, aber ich bin nicht so der Pro in Delphi. (Habe erst angefangen).
Edit: Habs doch noch gefunden.
Danke nochmals, jetzt kans weitergehn.
Mit der Aktualisirung, habe ich gemeint: Immer wenn ein neues File geschrieben wird, soll das hinzugefügt werden.
So, jetzt stehe ich schon vor dem nächsten Problem, bei dem du mir hofendlich weiter helfen kanst:
Ich will, dass wenn man eine gefundene Datei darin anklickt, diese erkannd wird, und in einer Variableb gespeichert wird:
Also das er wie bei einer FileListBox das addet. Ich finde leider keinen Befehl dafür, der dies so wie im code fenster ausführt.Code :1
filename := FileListBox1.FileName;
Geändert von Power-Poler (20.02.08 um 16:29 Uhr)
-
20.02.08 17:48 #4
- Registriert seit
- Mar 2004
- Beiträge
- 441
Und woran EXAKT soll dein Programm erkennen, ob eine Datei geschrieben wurde oder nicht?
Soll dein Programm sämtliche Plattentätigkeit überprüfen?
Oder steht nur ein bestimmtes Verzeichnis zur Überprüfung an?
Gibt es irgendwelche anderen Merkmale außer dem direkten Directory, anhand derer man feststellen könnte, dass eine neue Datei zur Sammlung dazu gekommen ist?
Was ist "darin"?
Was verstehst du unter "erkannt"?
Was meinst du mit "das"?
Welchem Codefenster?
Ehrlich: Drück' dich mal präziser aus, dann kann ich dir evtl. auch weiterhelfen. Wie soll ich genaue Hilfestellung bei solch ungenauen Angaben leisten?
-
21.02.08 13:20 #5
- Registriert seit
- Aug 2007
- Beiträge
- 20
1. Es wird nur eine *.ini in einem Bestimmten Verzeichnis erzeugt, sobald man den Kopf für Speichern drückt. Also immer wenn der Knopf gedrückt wird, soll sich die liste Aktualisiren.
2. Wenn man in der ComboBox auf eine der geaddeten dateien klickt, so dass diese "Aktiv" wird, also, wenn sie oben in der ComboBox steht.
3. Das diese ausgewählte Datei als Ausgewählte Datei aktzebtiert wird, und der Name in einer Variablen gespeichert wird, das ich im weiteren Verlauf des codes sagen kann: "Lies den Inhalt".
4. Bei einer FileListBox ist der Befehl dafür ja: "FileName", aber sowas steht bei einer ComboBox leider nicht zu verfügung.
Sorry, dass ich mich so unverständlich ausgedrückt habe, hoffe jetzt ist es genauer beschrieben.
Danke, fals du mir immer noch helfen wilst.
-
21.02.08 13:38 #6
- Registriert seit
- Mar 2004
- Beiträge
- 441
Na, dann wollen wir mal...
Na perfekt. Dann lässt sich ja der entsprechende Aufruf leicht in die OnButton-Methode einbauen und die brauchst nicht großartig die ganze Festplatte kontrollieren.
Das würde dann ungefähr so aussehen:
Code delphi:1 2 3 4 5 6
procedure TForm1.Button1Click(Sender: TObject); begin { mache irgendwas, wenn auf deinen Button geklickt wurde } ... GetAvailableFiles(ComboBox1); end;
Ah, ok.
Das funktioniert bei einer TComboBox einerseits über TComboBox.ItemIndex, andererseits über TComboBox.Text. In beiden Fällen ist die Onlinehilfe dein Freund (auch wenn leider keine Sourcebeispiele mehr drin enthalten sind).
Da ginge Folgendes:
Code delphi:1 2 3 4 5 6 7 8 9 10 11 12 13
type TForm1 = class(TForm) published SelectedFile: String; ... procedure TForm1.ComboBox1Change(Sender: TObject); begin if ComoBox1.ItemIndex <> -1 then TFrom1.SelectedFile := ComboBox1.Items[ComboBox1.ItemIndex] else TForm1.SelectedFile := ''; end;
alternativ:
Code delphi:1 2 3 4 5 6 7 8 9 10
type TForm1 = class(TForm) published SelectedFile: String; ... procedure TForm1.ComboBox1Change(Sender: TObject); begin TFrom1.SelectedFile := ComboBox1.Text; end;
Dafür steht bei einer TComboBox der ausgewählte Inhalt im Property Text, also z.B.
Geht aber eben auch über den ItemIndex. Viele Wege führen nach Rom.Code delphi:1
Filename := ComboBox1.Text;
Abseits dieser Thematik möchte ich dir dann aber noch etwas ans Herz legen:
Wenn du im Forum was schreibst, lies mal bitte wirklich, was da oberhalb des Eingabefensters in fetter roter Farbe steht. Danke.
-
21.02.08 14:11 #7
- Registriert seit
- Aug 2007
- Beiträge
- 20
Danke für deine Hilfe, meine ComboBox funktioniert jetzt so wie sie soll.
Fals du meine Rechtschreibung bemängelst, bin legasteniker, und habe zurzeit kein Word oder Sonstiges auf dem PC um eine Rechtschreibprüfung laufen zu lassen.
-
21.02.08 14:57 #8
- Registriert seit
- Mar 2004
- Beiträge
- 441
Legasthenie ist eine Sache, aber man kann doch trotzdem vollständige Sätze ausformulieren, auch wenn nicht zwingend jeder Buchstabe am richtigen Platz ist, oder?
Und ja - darauf hatte ich angedeutet.
Ähnliche Themen
-
txt.datein per DragDrop in combobox ziehen!
Von MOONLIGHT im Forum .NET Windows FormsAntworten: 5Letzter Beitrag: 03.01.11, 20:44 -
VB Datein und Ordner kopieren (FSO) mit Fortschrittsanzeige
Von bernimoses im Forum Visual Basic 6.0Antworten: 8Letzter Beitrag: 11.09.08, 19:36 -
Datein auslesen aus einem Ordner
Von Miles21 im Forum .NET ArchivAntworten: 5Letzter Beitrag: 17.06.05, 13:07 -
Ordner mit datein und Unterordner kopiern
Von AlexanderLind im Forum .NET ArchivAntworten: 1Letzter Beitrag: 23.09.04, 23:03 -
Datein in einem Ordner
Von Alexxx im Forum PHPAntworten: 5Letzter Beitrag: 16.11.03, 13:18





Zitieren
Login





