TDBNavigator: Fehler oder falsche Verwendung ?
TDBNavigator: Fehler oder falsche Verwendung ?
Hallo zusammen,
folgendes Problem wirft meine Frage auf, ob ich wieder mal etwas bei meiner Lazuarus Installation ( 2-0-12) etwas falsch gemacht habe oder ob ich vllt. einen Anwendungsfehler mache. Oder ist der DB Navigator etwas "unscharf"?
Oder hat das Entwicklerteam von Lazarus mal wieder eine andere Sicht auf die Dinge, als ich?
Ich habe ein ZEOS Tabellenobjekt (ZTable) und eine normale Datasource auf eine SQLITE3 DB-Tabelle mittels TZConnection gelegt.
Dann habe ich den TDBNavigator mit der DataSource verbunden und über einen Button die DB Tabelle geöffnet.
Das Problem:
Bei einer leeren DB-Tabelle werden "nbInsert", "nbEdit" und "nbRefresh" angezeigt.
Für "nbEdit" und "nbRefresh" ist dies in diesem Fall jedoch unlogisch.
Denn: welcher der nicht vorhandenen Sätze soll den bearbeitet oder aufgefrischt werden?
Gibt es eine Möglichkeit diese beiden Buttons auf "disabled" zu stellen? Oder muss ich eine Ableitung dieser Komponente machen,
um eine solche Funktion zu liefern?
Viele Grüße
Lorca
folgendes Problem wirft meine Frage auf, ob ich wieder mal etwas bei meiner Lazuarus Installation ( 2-0-12) etwas falsch gemacht habe oder ob ich vllt. einen Anwendungsfehler mache. Oder ist der DB Navigator etwas "unscharf"?
Oder hat das Entwicklerteam von Lazarus mal wieder eine andere Sicht auf die Dinge, als ich?
Ich habe ein ZEOS Tabellenobjekt (ZTable) und eine normale Datasource auf eine SQLITE3 DB-Tabelle mittels TZConnection gelegt.
Dann habe ich den TDBNavigator mit der DataSource verbunden und über einen Button die DB Tabelle geöffnet.
Das Problem:
Bei einer leeren DB-Tabelle werden "nbInsert", "nbEdit" und "nbRefresh" angezeigt.
Für "nbEdit" und "nbRefresh" ist dies in diesem Fall jedoch unlogisch.
Denn: welcher der nicht vorhandenen Sätze soll den bearbeitet oder aufgefrischt werden?
Gibt es eine Möglichkeit diese beiden Buttons auf "disabled" zu stellen? Oder muss ich eine Ableitung dieser Komponente machen,
um eine solche Funktion zu liefern?
Viele Grüße
Lorca
Re: TDBNavigator: Fehler oder falsche Verwendung ?
Dass bei einer leeren Tabelle der Button nbRefresh verfügbar ist, erscheint mir trotzdem logisch, denn bei einer Mehruser-Datenbank könnte es ja sein, dass ein anderer User schon einen Datensatz eingetragen hat, und du könntest dir damit die aktuelle Tabelle holen.
Bei nbEdit würde ich dir recht geben, aber ich habe mir ein kleines Beispiel für Delphi gemacht, und dort ist es genauso wie bei Lazarus: der Edit-Button ist auch bei leerer Tabelle aktiv. Man könnte sich vorstellen, dass der leere Record, der bei einer leeren DB im Grid erscheint, als temporärer Buffer schon existiert, so dass das Edit durchaus sinnvoll ist. Aber wenn dir das wichtig ist, solltest du einen Bug-Report schreiben, damit die Datenbank-Experten drüber schauen können.
Eine mögliche Lösung für nbEdit könnte man in TDBCustomNavigator.EditingChanged (lazarus/lcl/include/dbcustomnavigator.inc) einbauen:
Bei nbEdit würde ich dir recht geben, aber ich habe mir ein kleines Beispiel für Delphi gemacht, und dort ist es genauso wie bei Lazarus: der Edit-Button ist auch bei leerer Tabelle aktiv. Man könnte sich vorstellen, dass der leere Record, der bei einer leeren DB im Grid erscheint, als temporärer Buffer schon existiert, so dass das Edit durchaus sinnvoll ist. Aber wenn dir das wichtig ist, solltest du einen Bug-Report schreiben, damit die Datenbank-Experten drüber schauen können.
Eine mögliche Lösung für nbEdit könnte man in TDBCustomNavigator.EditingChanged (lazarus/lcl/include/dbcustomnavigator.inc) einbauen:
Code: Alles auswählen
procedure TDBCustomNavigator.EditingChanged;
var
CanModify: Boolean;
HasData: Boolean;
begin
CanModify:=Enabled and FDataLink.Active and FDataLink.DataSet.CanModify;
HasData := not (FDataLink.Dataset.BOF and FDataLink.Dataset.EOF); // <---- Neu
Buttons[nbInsert].Enabled:=CanModify;
Buttons[nbEdit].Enabled:=CanModify and not FDataLink.Editing and HasData; // "and HasData" ergänzt
Buttons[nbPost].Enabled:=CanModify and FDataLink.Editing;
Buttons[nbCancel].Enabled:=CanModify and FDataLink.Editing;
Buttons[nbRefresh].Enabled:=CanModify;
FocusableButtons[nbInsert].Enabled:=CanModify;
FocusableButtons[nbEdit].Enabled:=CanModify and not FDataLink.Editing and HasData; // "and HasData" ergänzt
FocusableButtons[nbPost].Enabled:=CanModify and FDataLink.Editing;
FocusableButtons[nbCancel].Enabled:=CanModify and FDataLink.Editing;
FocusableButtons[nbRefresh].Enabled:=Enabled and FDataLink.Active and not FDataLink.Editing;
end;
Re: TDBNavigator: Fehler oder falsche Verwendung ?
Hallo wp_xyz,
herzlichen Dank für Deine freundliche Antwort.
Ich war verhindert, und melde mich deshalb erst jetzt.
Deiner Überlegung bei nbRefresh, stimme ich zu. Die Situation mit einer mehr User DB hatte ich nicht auf den Schirm.
Ich denke, die nbEdit Situation, ist für die Kompatibilität und den Gleichlauf mit Delphi.
Für einen Bugreport, scheint es mir zu banal. Die Kollegen in der Lazarus Entwicklung haben (so glaube ich) größere Probleme zu lösen,
als sich um Dinge zu Kümmern, die auch bei Delphi so laufen.
Mir war es nur wichtig zu prüfen, ob diese Situation allein bei mir auftritt, weil ich vllt. mal wieder etwas bei der Installation von Lazarus
falsch gemacht habe, oder nicht.
Vielen Dank und Grüße
Lorca
herzlichen Dank für Deine freundliche Antwort.
Ich war verhindert, und melde mich deshalb erst jetzt.
Deiner Überlegung bei nbRefresh, stimme ich zu. Die Situation mit einer mehr User DB hatte ich nicht auf den Schirm.
Ich denke, die nbEdit Situation, ist für die Kompatibilität und den Gleichlauf mit Delphi.
Für einen Bugreport, scheint es mir zu banal. Die Kollegen in der Lazarus Entwicklung haben (so glaube ich) größere Probleme zu lösen,
als sich um Dinge zu Kümmern, die auch bei Delphi so laufen.
Mir war es nur wichtig zu prüfen, ob diese Situation allein bei mir auftritt, weil ich vllt. mal wieder etwas bei der Installation von Lazarus
falsch gemacht habe, oder nicht.
Vielen Dank und Grüße
Lorca
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: TDBNavigator: Fehler oder falsche Verwendung ?
Hi!
Vielleicht ein bischen Hintergrund über den TDBNavigator:
Den gibt es seit Delphi 1 und war immer für Multi-User-Betrieb vorgesehen:
Borland war stolz auf seine BDE (Borland Database Engine), die zuerst nur dBase, Paradox und MS Access bearbeiten konnte, aber (glaub ich) ab Delphi 2 auch SQL. Und alles im Multi-User-Betrieb.
Wir haben uns in den 90ern Anwendungen geschnitzt, die auf vorhandene dBase-Tabellen aufsetze und einen echten Multi-User-Betrieb zu Windows 3.1 / 95-Zeiten ermöglichte. Das war damals sensationell! Nicht mehr absprechen, welcher Kollege wann welche dBase-Tabelle bearbeitet!
Winni
Vielleicht ein bischen Hintergrund über den TDBNavigator:
Den gibt es seit Delphi 1 und war immer für Multi-User-Betrieb vorgesehen:
Borland war stolz auf seine BDE (Borland Database Engine), die zuerst nur dBase, Paradox und MS Access bearbeiten konnte, aber (glaub ich) ab Delphi 2 auch SQL. Und alles im Multi-User-Betrieb.
Wir haben uns in den 90ern Anwendungen geschnitzt, die auf vorhandene dBase-Tabellen aufsetze und einen echten Multi-User-Betrieb zu Windows 3.1 / 95-Zeiten ermöglichte. Das war damals sensationell! Nicht mehr absprechen, welcher Kollege wann welche dBase-Tabelle bearbeitet!
Winni
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1432
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: TDBNavigator: Fehler oder falsche Verwendung ?
Ja und ein Bug in der BDE Installation hat dann schonmal die komplette Festplatte gelöscht
Re: TDBNavigator: Fehler oder falsche Verwendung ?
Hab mir meine Antwort weiter oben nochmals angesehen, und ich zeige dir jetzt, wie man mit Hilfe von Subclassing den Edit-Button des DBNavigator mit ein paar Zeilen fixen kann, ohne in den LCL-Code einzugreifen:
Code: Alles auswählen
type // Muss vor der Form-Deklaration stehen, in der der Navigator verwendet wird.
TDBNavigator = class(DBCtrls.TDBNavigator)
protected
procedure EditingChanged; override;
end;
...
procedure TDBNavigator.EditingChanged;
begin
inherited;
if (Datasource <> nil) and (Datasource.Dataset <> nil) and
(DataSource.Dataset.BOF and Datasource.Dataset.EOF) then
begin
Buttons[nbEdit].Enabled := false;
FocusableButtons[nbEdit].Enabled := false;
end;
end;
- Dateianhänge
-
- dbnavigator_editbutton.zip
- (2.46 KiB) 75-mal heruntergeladen
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: TDBNavigator: Fehler oder falsche Verwendung ?
Hi!fliegermichl hat geschrieben: ↑Fr 5. Nov 2021, 11:54Ja und ein Bug in der BDE Installation hat dann schonmal die komplette Festplatte gelöscht
Den kannte ich noch nicht.
Ist mit glücklicherweise nie passiert.
Aber dafür gabs ja den Fortschritt:
Der erste Linux-Server diente erstmal als Backup für den Netware-Server.
Und kam u.a. ins Haus, weil Novell Netware ein Schweine-Geld für das CD-ROM-Modul verlangte. Das fiel bei Linux aus der Tüte. Auf einem 486er.
Später haben wir dann Netware rausgeschmissen und alles mit MarS unter Linux emuliert: Netware-Server von MartinStöver. Wunderbar. Samba war da noch nicht in Sicht ...
Als man bei dem Sharpen beim PhotoStyler bei größeren Bildern noch eine Kaffee holen konnte ...
Winni
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1432
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: TDBNavigator: Fehler oder falsche Verwendung ?
Naja, die BDE Installation hat vor der Installation das Zielverzeichnis gelöscht und wenn man gesagt hat, "ich will nach C:\" ...
-
- Beiträge: 843
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: TDBNavigator: Fehler oder falsche Verwendung ?
schmunzel....
Jetzt weiß ich woher die geballte Kompetenz in diesem Forum kommt.
Wir spielen mit den Sachen einfach länger herum als die Youngsters
Allein die Zeit hat schon für etliche Stories gesorgt -- ich fühl mich wohl hier
Jetzt weiß ich woher die geballte Kompetenz in diesem Forum kommt.
Wir spielen mit den Sachen einfach länger herum als die Youngsters
Allein die Zeit hat schon für etliche Stories gesorgt -- ich fühl mich wohl hier
Re: TDBNavigator: Fehler oder falsche Verwendung ?
tja, das waren auch noch "RG58 Netzwerke"
Einmal kurz die Verbindung weg wegen Wackelkontakt und schon war die Sperrdatei auf einer Netzwerkfreigabe "kaputt".
Das ist, Gott sei Dank, heute viel einfacher und stabiler.
Wie oft waren die Tabellen kaputt bei BDE...
Einmal kurz die Verbindung weg wegen Wackelkontakt und schon war die Sperrdatei auf einer Netzwerkfreigabe "kaputt".
Das ist, Gott sei Dank, heute viel einfacher und stabiler.
Wie oft waren die Tabellen kaputt bei BDE...
Gruß, Michael
-
- Beiträge: 843
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: TDBNavigator: Fehler oder falsche Verwendung ?
Mahh RGB58 Netzwerke....
Meine erste Netzwerkinstallation und DOS... drei PCs verbinden mit Netzwerkkarten und RGB58.
Hatte damals noch weniger Ahnung als heute gggg
Und die Informationsbeschaffung war wesentlich aufwendiger - Internet? Fehlanzeige, gab es noch nicht.
Also Bücher gelesen, Manuals gewälzt, Beschreibungen gelesen.
Karten einbauen, Verbinden, konfigurieren -- klappt nicht.
Dann halt anders.... da zogen damals Stunden ins Land.
Vor lauter rumkonfigurieren, Testen und an und abstecken hat gar nix mehr funktioniert.
In meiner Verzweiflung hab ich einen Freund gebeten mir zu helfen.
Der kam, sah sich das alles an und sprach die historischen Worte: "Willst du das Netzwerk-Kabel denn nicht mal anstecken?"
Mit dem ganzen Testen hatte ich einfach eine verbindung nicht mehr angesteckt und übersehen -- Kabel angesteckt und alles lief.
Die Blamage kann ich mir heute noch gelegentlich anhören ggggg
Meine erste Netzwerkinstallation und DOS... drei PCs verbinden mit Netzwerkkarten und RGB58.
Hatte damals noch weniger Ahnung als heute gggg
Und die Informationsbeschaffung war wesentlich aufwendiger - Internet? Fehlanzeige, gab es noch nicht.
Also Bücher gelesen, Manuals gewälzt, Beschreibungen gelesen.
Karten einbauen, Verbinden, konfigurieren -- klappt nicht.
Dann halt anders.... da zogen damals Stunden ins Land.
Vor lauter rumkonfigurieren, Testen und an und abstecken hat gar nix mehr funktioniert.
In meiner Verzweiflung hab ich einen Freund gebeten mir zu helfen.
Der kam, sah sich das alles an und sprach die historischen Worte: "Willst du das Netzwerk-Kabel denn nicht mal anstecken?"
Mit dem ganzen Testen hatte ich einfach eine verbindung nicht mehr angesteckt und übersehen -- Kabel angesteckt und alles lief.
Die Blamage kann ich mir heute noch gelegentlich anhören ggggg
Re: TDBNavigator: Fehler oder falsche Verwendung ?
kann ich nachvollziehen.. war eben alles neu.
In der "Firma" kam dann Yellow Cable für Graphische Systeme... das war, im Rückblick gesehen, ein Abenteuer
Gruß, Michael
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: TDBNavigator: Fehler oder falsche Verwendung ?
Hi!six1 hat geschrieben: ↑Sa 6. Nov 2021, 10:41tja, das waren auch noch "RG58 Netzwerke"
Einmal kurz die Verbindung weg wegen Wackelkontakt und schon war die Sperrdatei auf einer Netzwerkfreigabe "kaputt".
Das ist, Gott sei Dank, heute viel einfacher und stabiler.
Wie oft waren die Tabellen kaputt bei BDE...
Ja, 10Base2 war abenteuerlich. Wenn die Putzfrau mit dem Staubsauger irgendwelche BNC-Verbindungen rausgerupst hatte, und man durch die Büros lief und überprüfte, wer denn noch ein Netz hat und wer nicht, um die Stelle zu finden.
Und wehe die 50-Ohm-Abschluss-Widerstände fehlten! Irgenwie waren die immer weg. Deshalb hatte ich immer 2 Stück beim Kleingeld.
Winni
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: TDBNavigator: Fehler oder falsche Verwendung ?
Hi!
Ethernet seit 1983 und die verschiedenen IEEE 802 Versionen inkl IPX:
http://www.netzmafia.de/skripten/netze/netz4.html
Winni
Ethernet seit 1983 und die verschiedenen IEEE 802 Versionen inkl IPX:
http://www.netzmafia.de/skripten/netze/netz4.html
Winni