Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Lazarus DBGrid Eintrag (https://www.delphipraxis.net/211820-lazarus-dbgrid-eintrag.html)

xDdaviiDxD 9. Nov 2022 14:59

AW: Lazarus DBGrid Eintrag
 
Liste der Anhänge anzeigen (Anzahl: 1)
So Ich hab mal versucht das ganze mit der Hilfe des Guides etwas zu verschönern und Übersichtlicher zu machen. :-D

Ich weiß nicht ob du Die Fehler die ich Gefunden habe mit Logikfehler meinst aber ich hab gesehen das es einen Fehler gibt wenn ich den Zählerstand leer lasse wenn das Programm Läuft. :roll:
Dann hab ich noch den Fehler gefunden das er den Eintrag trotzdem macht auch wenn kein Name aus der Combobox ausgewählt ist.

Behoben hab ich das leider Bisher noch nicht da setz ich mich Morgen mal dran. :)

In den Anhang pck ich mal den Verschönerten Code.

haentschman 11. Nov 2022 06:53

AW: Lazarus DBGrid Eintrag
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallöle...8-)

Anbei die Bemerkungen...

xDdaviiDxD 11. Nov 2022 08:53

AW: Lazarus DBGrid Eintrag
 
Vielen Vielen Dank haentschman!:-D

Ich hab meinen Code noch etwas angepasst und mit dem Guide und deinen Tipps/Hilfe Lesbarer gemacht.
Das hat mir extrem geholfen auch nochmal etwas mehr Verständnis dafür zu bekommen.

Danke das du dir die Zeit genommen hast :)

Eine Frage hätte ich noch, Ich hab ja die Procedure von dem Edit Feld mit der Passwort Eingabe. Ich steh grade etwas auf dem Schlauch und frage mich ob ich das noch etwas Sauberer schreiben könnte da ich mehrere Buttons erst nach Eingabe das Passwortes sichtbar machen möchte.

Code:
procedure TForm1.EditPasswortChange(Sender: TObject);

begin
  EditPasswort.PasswordChar:= #0;
  EditPasswort.PasswordChar:= '*';
    if (EditPasswort.Text ='test123') then
      BtnMinimieren.Visible:=True
    else
      BtnMinimieren.Visible:=False;

    if (EditPasswort.Text ='test123') then
      BtnSchliessen.Visible:=True
    else
      BtnSchliessen.Visible:=False;

    if (EditPasswort.Text ='test123') then
      BtnNewDb.Visible:=True
    else
      BtnNewDb.Visible:=False;
end;
MFG
David

Klaus01 11. Nov 2022 09:28

AW: Lazarus DBGrid Eintrag
 
.. du kannst das mit begin end zusammenfassen.
Delphi-Quellcode:
    if (EditPasswort.Text ='test123') then
      begin
        BtnMinimieren.Visible:=True;
        BtnSchliessen.Visible:=True;
        BtnNewDb.Visible:=True;
      end
    else
      begin
        BtnMinimieren.Visible:=False;
        BtnSchliessen.Visible:=False;
        BtnNewDb.Visible:=False;
      end;

xDdaviiDxD 11. Nov 2022 09:33

AW: Lazarus DBGrid Eintrag
 
Vielen Danke Klaus :)

Delphi.Narium 11. Nov 2022 09:52

AW: Lazarus DBGrid Eintrag
 
Alternative:
Delphi-Quellcode:
procedure TForm1.EditPasswortChange(Sender: TObject);
begin
  EditPasswort.PasswordChar := #0;
  EditPasswort.PasswordChar := '*';
  BtnMinimieren.Visible := (EditPasswort.Text = 'test123');
  BtnSchliessen.Visible := (EditPasswort.Text = 'test123');
  BtnNewDb.Visible := (EditPasswort.Text = 'test123');
end;
oder
Delphi-Quellcode:
procedure TForm1.EditPasswortChange(Sender: TObject);
begin
  EditPasswort.PasswordChar := #0;
  EditPasswort.PasswordChar := '*';
  // Es reicht, diesen Vergleich einmal zu machen.
  BtnMinimieren.Visible := (EditPasswort.Text = 'test123');
  BtnSchliessen.Visible := BtnMinimieren.Visible;
  BtnNewDb.Visible := BtnMinimieren.Visible;
end;
oder
Delphi-Quellcode:
function PruefePasswort(AEingabe, APasswort : String) : Boolean;
begin
  // Hier könnte man später auch eine beliebige Prüflogik implementieren.
  Result := AEingabe = APasswort;
end;

procedure TForm1.EditPasswortChange(Sender: TObject);
begin
  EditPasswort.PasswordChar := #0;
  EditPasswort.PasswordChar := '*';
  BtnMinimieren.Visible := PruefePasswort(EditPasswort.Text,'test123');
  BtnSchliessen.Visible := BtnMinimieren.Visible;
  BtnNewDb.Visible := BtnMinimieren.Visible;
end;

DeddyH 11. Nov 2022 10:03

AW: Lazarus DBGrid Eintrag
 
Keine Ahnung, ob das unter Lazarus funktioniert, aber so oder ähnlich würde ich es wohl machen:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    edtPassword: TEdit;
    btnBla: TButton;
    btnBlubb: TButton;
    btnWuppdi: TButton;
    procedure FormCreate(Sender: TObject);
    procedure edtPasswordChange(Sender: TObject);
    ...
  private
    { Private-Deklarationen }
    FButtons: array of TButton;
    function PasswordValid(const APassword: string): Boolean;
    ...
  end;
 
 ...
 
procedure TForm1.edtPasswordChange(Sender: TObject);
var
  i: integer;
begin
  for i := Low(FButtons) to High(FButtons) do
    FButtons[i].Visible := PasswordValid(edtPassword.Text);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FButtons := [btnBla, btnBlubb, btnWuppdi];
end;

function TForm1.PasswordValid(const APassword: string): Boolean;
begin
  Result := APassword = 'test123';
end;
P.S.: das PasswordChar kann man direkt im Objektinspektor setzen und muss das nicht immer wieder tun.

Delphi.Narium 11. Nov 2022 10:18

AW: Lazarus DBGrid Eintrag
 
Um die Passwortprüfung nur einmal machen zu müssen:
Delphi-Quellcode:
procedure TForm1.edtPasswordChange(Sender: TObject);
var
  i : integer;
  bOk : Boolean;
begin
  bOk := PasswordValid(edtPassword.Text);
  for i := Low(FButtons) to High(FButtons) do
    FButtons[i].Visible := bOk;
end;
Je nachdem wie die Prüfung des Passwortes erfolgt (z. B. Abgleich mit Daten in einer Datenbank), kann es schon sinnvoll sein, die Prüfung des Passwortes nur einmalig vorzunehmen.

xDdaviiDxD 11. Nov 2022 11:05

AW: Lazarus DBGrid Eintrag
 
Vielen Dank euch allen,

ich werde es alles mal Durchtesten und schauen was am besten für das Projekt Passt. :-D

xDdaviiDxD 28. Nov 2022 11:00

AW: Lazarus DBGrid Eintrag
 
Guten Tag,

Ich Hoffe das ist Okay das ich hier drin einfach meine Nächste Frage stelle. :D

und zwar würde ich gern das DBGrid einmal als CSV Exportieren und später Importieren.

Mit Hilfe des Internets hab ich den Export als CSV schon "Fertig".

Code:
//==============================================================================
procedure TForm1.btnCsvExportClick(Sender: TObject);
//==============================================================================
var
 sInhalt:string;
 fDatei:textfile;
begin
 assignfile(fDatei,'C:\Lazarus_Projekte\DB_Gaszähler\DBDaten.csv');
 rewrite(fDatei);
 TableDaten.First;
while not TableDaten.EOF do
 begin
  sInhalt:='"' + TableDaten.FieldByName('idDaten').AsString +'",';
  sInhalt:=sInhalt + '"' + TableDaten.FieldByName('Datum').AsString +'"';
  sInhalt:=sInhalt + '"' + TableDaten.FieldByName('Zeit').AsString +'",';
  sInhalt:=sInhalt + '"' + TableDaten.FieldByName('Name').AsString +'"';
  sInhalt:=sInhalt + '"' + TableDaten.FieldByName('Stand').AsString +'"';
  sInhalt:=sInhalt + '"' + TableDaten.FieldByName('Neu').AsString +'"';
  sInhalt:=sInhalt + '"' + TableDaten.FieldByName('Verbrauch').AsString +'"';

  WriteLn(fDatei, sInhalt);
  TableDaten.next;
 end;
   closefile(fDatei);
end;
Mein Problem ist das ich den Import einfach nicht Hinbekomme. :s

Es sollte am besten per Button in mein DBGrid.
Würde mich sehr über weitere Hilfe Freuen.

MfG
David


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:09 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz