| |
|
|
Martin Kempf | Moin. Gibts einen Befehl, mit dem ich die Indexdatei nicht aufsteigend sondern absteigend sortieren lassen kann? |
|
|
| |
|
|
|
| Wie lässt Du denn jetzt aufsteigend sortieren? |
|
|
| |
|
|
|
Dieter Zornow | Nein, gibt es nicht. Wenn du aber erklärst was du vor hast, kann dir vielleicht jemand helfen. |
|
|
| Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 28.09.2009 ▲ |
|
|
|
|
Martin Kempf | Wenns die Indizierung nicht andersrum gibt, dann zäum ich halt mein Pferd von hinten auf, passt scho. Aber wo ihr mir auf die Sprünge helfen könntet: Ich hab zwei offene Fenster. Fenster 1 hat eine Gridbox mit 24 Zeilen, in der die aktuellsten 24 Datenbankeinträge vorhanden sind. Fenster 2 hat eine Eingabemaske für einen Datensatz. Ich möchte den in der Gridbox jeweils angeleuchteten Datensatz sofort in die Maske übernehmen. Über die Waitinputschleife lasse ich die Ereignisse prüfen. Bei Mausklicks klappt das wunderbar über KompilierenMarkierenSeparieren Ich kann mich aber in der Gridbox auch mit Cursor Hoch, runter, Pos1, Ende, PgUp und PdDn bewegen und hab den Dreh noch nicht raus, wie ich die Scankeyabfrage sauber einfüge. Wie schreibe ich "Wenn Scankey größer 32 und kleiner 41" auf Xprofanisch? |
|
|
| |
|
|
|
| Schau mal, wann in der subClassProc wm_keydown ankommt. |
|
|
| |
|
|
|
Dieter Zornow | Versuche es mal so
if (%scankey > 32) and (%scankey < 41) |
|
|
| Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 29.09.2009 ▲ |
|
|
|
|
Falk Fallenstein | Beim alten dBase III+ (letzte DOS-Version ca. 1985) gab es auch keinen Befehl zum absteigenden Indizieren, für numerische Felder jedoch einen sehr einfachen Trick:
use TABELLE index on -FELD1 to XFELD1 * FELD1 ist numerisch, XFELD1.NDX wird erzeugt use TABELLE index XFELD1
Das ist bei XProfan nicht mehr möglich, weil jetzt alle Feldbezeichner immer als Strings behandelt werden, auf die der numerische Operator "Vorzeichenwechsel" nicht anwendbar ist.
Einfacher geht es bei dBase III+ mit dem SORT-Befehl und der dazugehörigen /D (descending) Option:
use TABELLE sort on FELD1 to TABELLE1 /D use TABELLE1
Das erzeugt keine Indexdatei, sondern eine komplett neue DBF Datei. Zum schnellen Finden bestimmter Datensätze muss also auch ein neuer Index erzeugt werden. Aber SORT funktioniert auch problemlos mit String- und Datumsfeldern. Deshalb benutze ich dBase III+ auch heute noch ganz gern. |
|
|
| Strategien im Vergleich: Microsoft: der Computer macht mit Dir, was er will ... XProfan: der Computer macht, was Du von ihm willst.
XProfan 11, Windows XP (1.5 GByte RAM), XProfEd | 29.09.2009 ▲ |
|
|
|
|
Martin Kempf | Mit den Scancodes bin ich nicht weitergekommen, da scheint sich alles in der Gridbox abzuspielen und man kann die mit den Cursortasten ausgeführten Bewegungen offenbar nicht über die Scankeyfunktion auslesen. Prima der Tip mit dem Subclassing, da bekomm ich sofort ein Feedback. Ich weiß zwar noch nicht, warum ich bei jeder Tasteneingabe eine Subclassmessage bekomme, obwohl ich doch nur ElseIf SubClassMessage(hGrid&, ~wm_keydown) abfrage, aber damit kann ich leben und umgehen. Besten Dank auch! |
|
|
| |
|
|
|
| In &swParam steht die Tastennummer und einzelne Tasten abwürgen kannst Du indem Du für den Fall set("winproc",0) setzt. |
|
|
| |
|
|
|
Martin Kempf | Danke für den Tip mit dem swParams. Nachdem baustellenmäßig nun saure Gurken Zeit angesagt ist, komm ich mal wieder zum Programmieren und das mit dem Parametern klappt gut. Frage zu den dBase-Geschichten: Werden denn die Indexdateien nicht automatisch aktualisiert, wenn ich mit Browse oder Append neue Datensätze angefügt habe? Das Browse ist schon ne prima Funktion, die viele Sachen erleichtert, macht aber nur halb glücklich, weils einfach einige Mankos bei der Bedienung gibt. Wenn ich mit dem Rollrad der Maus runterscrolle, geht das nur, wenn ich auch mit dem Mauszeiger auf dem schmalen Scrollbalken positioniert bin. Oder wenn ich einen Datensatz neu angefügt habe, dann bekomme ich den nicht angezeigt, auch mit scrollen oder blättern nicht - ich muß erst die Browsefunktion beenden und wieder neu aufrufen... liegts vielleicht dran, daß dBase Funktionen ausser mir keiner mehr braucht und steifmütterlich behandelt werden? |
|
|
| |
|
|
|
Thomas Freier | Nein! Nein! Nein! Browse? Naja, muß nicht sein. Heute gibs dafür Listview. Ich verwende jedoch nur Franks ListView.dll . Da bleibt fast kein Wunsch offen. Naja, bis aufs Drucken und Sortieren nach Spalten über 250 Zeichen (in Arbeit). Einmal das Beispiel: Eigene_Eingaben.prf ansehen mit den Controls zu Editieren. Auch DateEdit oder MultiEdit für MEMO machen sich gut. Ich persönliche nehme als letzte eine 0 breite Spalte für die Datensatznummer mit ins Listview und speicher die Änderungen Datensatz für Datensatz. Franks Beispiel über eine csv ist nicht mein Fall. Soll ein MEMO-Feld über 250 Zeichen angezeigt werden, so muß die Spalte nachträglich über SetItemTextEx(H,T,S,L,A) befüllt werden. |
|
|
| |
|
|