Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi DB-Grid mit Intraweb 3.2 Komponenten darstellen? (https://www.delphipraxis.net/11328-db-grid-mit-intraweb-3-2-komponenten-darstellen.html)

ak1 4. Nov 2003 12:07


DB-Grid mit Intraweb 3.2 Komponenten darstellen?
 
Hallo Leute,

weiss jemand von Euch wie ich ein gefülltes DB-Grid mit den Intraweb 3.2 Komponenten darstelle?
Da Javascript im Browser deaktiviert ist, müssen die 3.2'er Komponten genügen.

Gruß AK

ak1 8. Nov 2003 00:37

Re: DB-Grid mit Intraweb 3.2 Komponenten darstellen?
 
Sooooo ich hab mal ein bisschen Zeit gefunden und eine Lösung erstellt, das ist ein Grid mit den Inhalten aus einer Tabelle, in der 2. spalte sind die Felder editierbar, in der dritten Spalte sind Buttons zum übernehmen der Änderung der Editfelder:

Code:
procedure TIWForm2.IWAppForm32Create(Sender: TObject);
var i: integer;
begin
  iwgrid321.cell[0,0].text := 'Name';
  iwgrid321.cell[0,1].text := 'Geburtstag';
  iwgrid321.cell[0,2].text := 'Ändern';
  table1.Open;
  table1.First;
  iwgrid321.RowCount:=table1.RecordCount+1;
  for i := 1 to table1.RecordCount do begin
    iwgrid321.cell[i,0].text := table1.fieldbyname('Name').asstring;
    with iwgrid321.Cell[i,1] do begin  //editfeld
      Control:=TIWEdit32.Create(self);
      with TIWEdit32(Control) do begin
        Text:=table1.fieldbyname('Geburtstag').asstring;
      end;
    end;
    with iwgrid321.Cell[i,2] do begin            //button
      Control:=TIWButton32.Create(self);
      with TIWButton32(Control) do begin
        Text:='Ändern';
        onclick:=testprozedur; //sql-Anweisung
      end;
    end;
    table1.Next;
  end;
  table1.Close;
end;
Wie gesagt das läuft alles ohne Javascript im Browser.

ak1 8. Nov 2003 12:37

Re: DB-Grid mit Intraweb 3.2 Komponenten darstellen?
 
Hallo,
falls es jemanden interessieren sollte:
Das ist ein dreispaltiges Grid mit einem Edittierbaren
Feld und einem Buttonfeld zum ändern des Edit eintrages in der Tabelle. Ich habe Testweise eine Paradoxtabelle genommen. Javascript ist im Browser ausgeschaltet.

Code:
procedure TIWForm2.gridaufbauen();
var i: integer;
begin
  iwgrid321.cell[0,0].text := 'Name';
  iwgrid321.cell[0,1].text := 'Geburtstag';
  iwgrid321.cell[0,2].text := ' ';
  table1.Open;
  table1.First;
  iwgrid321.RowCount:=table1.RecordCount+1;
  for i := 1 to table1.RecordCount do begin
    iwgrid321.cell[i,0].text := table1.fieldbyname('Name').asstring;
    with iwgrid321.Cell[i,1] do begin  //editfeld
      Control:=TIWEdit32.Create(self);
      with TIWEdit32(Control) do begin
        Text:=table1.fieldbyname('Geburtstag').asstring;
      end;
    end;
    with iwgrid321.Cell[i,2] do begin            //button
      Control:=TIWButton32.Create(self);
      with TIWButton32(Control) do begin
        Text:='Ändern';
        name:='but'+inttostr(i);
        onclick:=testprozedur; //sql-Anweisung
      end;
    end;
    table1.Next;
  end;
  table1.Close;
end;

//------------------------------------------------------

procedure TIWForm2.testprozedur(ASender: TObject);
 var
 zeile: integer;
 zeilenname: string;
 begin
     zeilenname:= (ASender as TIWButton32).name;
     zeilenname:= copy(zeilenname,4,length(zeilenname));

IWLabel321.Caption:=iwgrid321.Cell[strtoint(zeilenname),1].Control.text;
     table1.Open;
     table1.RecNo:=strtoint(zeilenname);
     table1.Edit;

table1.FieldByName('Geburtstag').AsString:=iwgrid321.Cell[strtoint(zeilennam
e),1].Control.text;
     table1.Post;
     gridaktualisieren;
 end;

//---------------------------------------------------------------

procedure TIWForm2.gridaktualisieren;
var i: integer;
begin
  table1.Open;
  table1.First;
  for i := 1 to table1.RecordCount do begin
    with iwgrid321.Cell[i,1] do begin  //editfeld
      with TIWEdit32(Control) do begin
        Text:=table1.fieldbyname('Geburtstag').asstring;
      end;
    end;
    table1.Next;
  end;
  table1.Close;
end;
Gruß AK

P.S. das funktioniert alles ohne Javascript im Browser

ak1 9. Nov 2003 14:33

Re: DB-Grid mit Intraweb 3.2 Komponenten darstellen?
 
Hallo nochmal,

da ich ja nichts zu tun hab ;-) , hier mal ein Grid das fünf Zeilen und umfasst und per Button auf die nächsten Seiten des Grids schaltet.
Das macht sich sehr gut bei Grids die mehr als 20 Datensätze haben. Da ich ja warscheinlich kein Javascript im Browser angeschaltet haben darf, musste ich das "per Hand" konstruieren und konnte nicht die guten TMS oder Standard Komponenten nehmen. Das Grid hat eine editierbare spalte, aber diesmal keine Buttons in der dritten Spalte. die Datenbank wird über einen extra Button aktualisiert :

Code:
procedure TIWForm1.gridaufbauen1();
var i: integer;
begin

  IWGrid321.ColumnCount:=2;
  IWGrid321.Width:=240;
  IWGrid321.cell[0,0].Width:='150';
  IWGrid321.cell[0,1].width:='90';
  IWGrid321.cell[0,0].text := 'Name';
  IWGrid321.cell[0,1].text := 'Geburtstag';
  IWGrid321.Font.Style:=[];
  table1.Open;
  table1.First;
  iwgrid321.RowCount:=6;
  for i := 1 to iwgrid321.RowCount-1 do begin
    iwgrid321.cell[i,0].text := table1.fieldbyname('Name').asstring;
    with iwgrid321.Cell[i,1] do begin          //editfeld
      Control:=TIWEdit32.Create(self);
      with TIWEdit32(Control) do begin
        Text:=table1.fieldbyname('Geburtstag').asstring;
        width:=90;
      end;
    end;
    table1.Next;
  end;

  //zweites unteres Grid mit den Buttons aufbauen
  IWGrid322.RowCount:=1;
  if 5 mod (trunc(table1.RecordCount / 5)) = 0 then begin
    IWGrid322.ColumnCount:= trunc(table1.RecordCount / 5);
    IWGrid322.Width:= trunc(IWGrid322.ColumnCount * 20);
  end
  else begin
    IWGrid322.ColumnCount:= trunc(table1.RecordCount / 5)+1;
    IWGrid322.Width:= trunc((IWGrid322.ColumnCount) * 20);
  end;

  for i:=0 to IWGrid322.ColumnCount-1 do begin
    with IWGrid322.Cell[0,i] do begin
      Control:=TIWButton32.Create(self);
      with TIWButton32(Control) do begin
        Text:=inttostr(i+1);
        name:='gri'+inttostr(i+1);
        onclick:=seitenclick;
      end;
    end;
  end;
  table1.Close;

end;

procedure TIWForm1.seitenclick(ASender: TObject);
var
zeilenbutton: string;
i :integer;
begin
  zeilenbutton:= (ASender as TIWButton32).name;
  zeilenbutton:= copy(zeilenbutton,4,length(zeilenbutton));

  table1.Open;
  table1.RecNo:= trunc((strtoint(zeilenbutton) * 5)-5);
  if zeilenbutton = '1' then
    table1.First;

  for i := 1 to iwgrid321.RowCount-1 do begin
    if table1.Eof then begin    //wenn das ende der datenbanktabelle errreicht ist, soll nichts mehr im grid angezeigt werden
      iwgrid321.cell[i,0].text := '';
      with iwgrid321.Cell[i,1].Control do begin          //editfeld
        Text:='';
      end;
    end
    else begin
      iwgrid321.cell[i,0].text := table1.fieldbyname('Name').asstring;
      with iwgrid321.Cell[i,1].Control do begin          //editfeld
        Text:=table1.fieldbyname('Geburtstag').asstring;
      end;
    end;

    table1.Next;
  end;
  table1.Close;

end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:02 Uhr.

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