Scrollen im DBGrid
-
Hallo zusammen.
Ist es möglich das DBGrid so einzustellen das ich beim scrollen nur die Liste der Einträge hoch und runter scrolle ohne die Auswahl zu ändern ? Ich hab bereits im Forum gesucht und leider nichts passendes gefunden oder einfach den Wald vor lauter Bäumen nicht gesehen.
Gruß
MichaPS: Mir ist gerade auch noch eine Frage zur Datenbankverbindung eingefallen. Und zwar starte ich die Verbindung über eine SQLDatabase-Komponente wenn ich das Formular zum bearbeiten aufrufe. Da ich aber später mehrere Formulare für verschiedene Tabellen habe frage ich mich ob es sinnvoller ist die Verbindung im Hauptformular zu öffnen und ob es möglich ist von den einzelnen Forms dann darauf zu zugreifen ? Oder lieber bei jedem Formular connecten und beim schliessen disconnecten ?
-
MichaelBo schrieb:
Ist es möglich das DBGrid so einzustellen das ich beim scrollen nur die Liste der Einträge hoch und runter scrolle ohne die Auswahl zu ändern ?
Kurz und knapp: Nein.
Eventuell wäre es mäglich eine Komponente abzuleiten, die das gewünschte Verhalten zeigt...MichaelBo schrieb:
Mir ist gerade auch noch eine Frage zur Datenbankverbindung eingefallen. Und zwar starte ich die Verbindung über eine SQLDatabase-Komponente wenn ich das Formular zum bearbeiten aufrufe. Da ich aber später mehrere Formulare für verschiedene Tabellen habe frage ich mich ob es sinnvoller ist die Verbindung im Hauptformular zu öffnen und ob es möglich ist von den einzelnen Forms dann darauf zu zugreifen ? Oder lieber bei jedem Formular connecten und beim schliessen disconnecten ?
Für so etwas nimmt man am besten ein Datenmodul (TDataModule) und zentralisiert dort alle Datenbankaktivitäten.
-
Hallo Joe.
Erstmal herzlichen Dank für die Antworten.
Das Grid hab ich mit einer XDBGrid-Komponente fast hinbekommen, wegen den Datenmodul hab ich mir ein Tutorial rausgesucht was ich mir mal ansehen werde.
Gruß
Micha
-
So das Tutorial hab ich durchgearbeitet und es klappt wunderbar mit dem Datenmodul. Jetzt habe ich eine Frage zur Sicherheit.
Gibt es unter C++ sowas wie in PHP das mysql_real_escape oder muss man sich da selbst eine Funktion zum escapen schreiben ?
Dann hab ich noch eine Frage zu Daten die zur Programmlaufzeit immer mal wieder in verschiedenen Forms gebraucht werden. Wie werden solche Daten üblicherweise hinterlegt ? Ich hab mir gedacht vielleicht eine INI-Datei oder eine public Struktur evtl. im Datenmodul, sind das empfehlenswerte Möglichkeiten oder gibt es da bessere Lösungen ?
Gruß
Micha
-
Hallo
MichaelBo schrieb:
Gibt es unter C++ sowas wie in PHP das mysql_real_escape oder muss man sich da selbst eine Funktion zum escapen schreiben ?
Zumindestens für den Builder 5 ist mir eine solche Funktion nicht bekannt. Dafür hat aber die TQuery-Klasse die Eigenschaft ParamStr, über die bei entsprechend vorbereiteten SQL-Anweisungen Parameter übergeben werden können, die dann auch richtig escaped werden.
Dann hab ich noch eine Frage zu Daten die zur Programmlaufzeit immer mal wieder in verschiedenen Forms gebraucht werden. Wie werden solche Daten üblicherweise hinterlegt ? Ich hab mir gedacht vielleicht eine INI-Datei oder eine public Struktur evtl. im Datenmodul, sind das empfehlenswerte Möglichkeiten oder gibt es da bessere Lösungen ?
Wenn du schon ein DataModul hast, dann benutzt es auch dafür, denn dafür ist es da. Ansonsten wäre noch ein manuelles Singleton denkbar. Externe Dateien sollten für den Austausch innerhalb eines Programms nicht benutzt werden, nur wenn die Daten auch außerhalb des laufenden Programms hinterlegt werden sollen (zum Beispiel um die Daten beim nächsten Start weiterverwenden zu können).
bis bald
akari
-
Hallo akari.
Danke für die Antworten.
Das mit den Parametern hab ich hinbekommen, kannte die Option zwar aus dem Tutorial aber wusste nicht ob die Parameter escaped werden.
Wie speichere ich denn am besten die Daten die zur Programmlaufzeit verwendet werden im Datenmodul ? Ich hab eigentlich nur Werte die einen Key und ein Value haben also BenutzerID = 1 oder StandardDrucker = HP z.B.
Ich hab gesehen dass die TValueListEditor-Komponente eigentlich genau das richtige wäre aber da sagt mir der Builder das ich die Klasse nicht auf einem Datenmodul benutzen darf. Gibt es dafür eine Alternative auf dem Datenmodul oder eine Möglichkeit es doch zu benutzen ?
Gruß
Micha
-
Na ja, das ist ja auch eine visuelle Komponente. Ich würde eine TStrngList nehmen, diese stellt auch entsprechende Funktionen bereit.
-
Danke werd ich mal ausprobieren.
Gruß
Micha
-
Hallo
Oder std::map<Key, Value>
bis bald
akari
-
akari schrieb:
Oder std::map<Key, Value>
Ja ja, der Standard... Da habe ich irgendwie überhaupt keinen Bezug zu. Ich bin durch und durch VCL-verseucht...
-
Hallo.
Ich hab mir die TStringList angesehen aber soweit ich das gesehen habe kann ich nur den Wert mit einem Index eintragen aber keinen Key oder hab ich was übersehen ? Wobei das im Endeffekt ja egal wäre, solange ich weiß das meine BenutzerID im Index 0, der Standard Drucker im Index 1 usw. steht wäre das ja auch eine Lösung.
Dann bekomm ich noch den Fehler da ich die SL von Hand deklarieren musste weil mir Borland keine Komponente für TStringList zur verfügung stellt dass er bei jedem Testlauf den Fehler "... besitzt keine entsprechende Komponente. Soll die Deklaration entfernt werden?" meldet.
Gruß
Micha
-
Den Index eines Keys kann man mit TStringList::IndexOfName() ermitteln.
-
Nimm std::map<>.