AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TadvStringGrid -- Verschieben der Spalten

Ein Thema von Jerry · begonnen am 31. Okt 2005 · letzter Beitrag vom 31. Okt 2005
 
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#9

Re: TadvStringGrid -- Verschieben der Spalten

  Alt 31. Okt 2005, 13:26
wow umständlich und wenig wartungsfreundlich oder?

1. bitte setz beim codeposten doch die delphitags!
2. ich würde mir überlegen, ob ihr euch nicht eine liste anlegt, in der die felder stehen!

Delphi-Quellcode:
type
  tint=class
    value:integer;
  end;

  tfelddef=record
    fname:string;
    display:string;
    typ:integer; // 1:string 2:integer 3:float etc
  end;

  var
    fldlist:array of tfelddef;
    anzfields:integer;
...
procedure init;
begin
  anzfields:=3; // 3 => anzahl der felder in der db hier nur als beispiel
  setlength(fldlist,anzfields);
  fldlist[0].fname:='name';
  fldlist[0].display:='Name';
  fldlist[0].typ:=1;

  fldlist[1].fname:='alter';
  fldlist[1].display:='Alter';
  fldlist[1].typ:=2;

  fldlist[1].fname:='groesse';
  fldlist[1].display:='Größe';
  fldlist[1].typ:=3;

  ...// hier die anderen
end;


procedure load;
var
  zeile,spalte:integer;
  feldname:tint;
begin
  query.sql.txt:='select * from tabelle'; // etc
  query.open;

  if query.eof then
    exit;
  
  zeile:=0;

  for spalte:=0 to anzfields-1 do
  begin
    feldname:=tint.Create;
    feldname.value:=spalte; //<- spalte zum ladezeitpunkt

    grid.Objects[0,Zeile]:=feldname; // der spalte(in zeile 0) das object zuweisen
    grid.cell[0,Zeile]:=fldlist[spalte].display; // titel
  end;
  
  while not query.eof do
  begin
    inc(zeile); // nächste zeile

    for spalte:=0 to anzfields-1 do
    begin
      case fldlist[spalte].typ of
        1: grid.Cells[Spalte,Zeile]:=query.FieldByName(fldlist[spalte].fname).asString;
        2: grid.Ints[Spalte,Zeile]:=query.FieldByName(fldlist[spalte].fname).asInteger;
        3: grid.floats[Spalte,Zeile]:=query.FieldByName(fldlist[spalte].fname).asFloat;
      end;
    end;

    query.next;
  end;
end;
- baeachte dabei, dass du die objekte ggf. wieder freigeben musst.
- das speichern über die feldnamen sollte dann keine probleme machen, da der db die reihenfolge egal ist, wenn du per feldname die werte zuweist.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz