AGB  ·  Datenschutz  ·  Impressum  







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

Listview Spalten zur Laufzeit?

Ein Thema von celinaw · begonnen am 29. Apr 2004 · letzter Beitrag vom 1. Mai 2004
 
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Listview Spalten zur Laufzeit?

  Alt 29. Apr 2004, 04:25
Delphi-Quellcode:
const SQL_Names: array [0..Spalten] of String = (<Spaltenname1>, <Spaltenname1>, ...);
const List_Names: array [0..Spalten-1] of String = (<Spaltenname1>, <Spaltenname1>, ...);

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  for i := to Spalten-1 do
  begin
    CheckListBox1.Items.Add(List_Names[i]);
    CheckListBox1.Checked[i] := True;
  end;
end;

procedure TForm1.bSucheClick(Sender: TObject);
var
  bFirst: Boolean;
  i: Integer;
  ListItem : TlistItem;
begin
  bFirst := False;
  Screen.Cursor := crHourGlass;
  lfertig.Caption:= '';
  lInfo.Caption:='';
  Memo1.Lines.Clear;
  dbMain.HostName:=SetupForm.edServer.Text; //Server
  dbMain.User:=SetupForm.edLogin.Text; //Benutzername
  dbMain.Password:=SetupForm.edPassword.Text; //Passwort
  dbMain.Database:=SetupForm.edDB.Text; //Name der Datenbank
  dbMain.Connected:=True; //Verbindung herstellen
  lvAnzeige.Items.Clear;
  try
    qrMain.SQL.Text :=
      'SELECT * ' +
      'FROM ' +
      'table_ordertracking T,' +
      'kundenmg K ' +
    'WHERE ' +
      'T.Customer_Number=K.Customer_Number ' +
      'AND ' +
      'T.Customer_Number like ''' + edknr.Text + '''"%" ' +
      'AND ' +
      'T.Order_Number like ''' + edatnr.Text + '''"%" ' +
    'ORDER BY ' +
      'T.DPrint;';

    qrMain.Open;
    qrMain.FieldByName('Order_Type').AsString;
    gauge1.Visible:= True;
    gauge1.maxvalue := qrMain.recordcount;
    lvAnzeige.Items.BeginUpdate;
    lv_Anzeige.Columns.Clear;
    for i := 0 to Spalten-1 do
    begin
      if CheckListBox1.Checked[i] then
        lv_Anzeige.Columns.Add.Caption := List_Names[i];
    end;
    while not qrMain.Eof do
    begin
      ListItem := lvAnzeige.Items.Add;
      ListItem.Caption:=qrMain.FieldByName('Order_Type').AsString;
      for i := 0 to Spalten-1 do
      begin
        if CheckListBox1.Checked[i] then
        begin
          if bFirst then
          begin
            if SQL_Names[i] = 'First_Eventthen
              ListItem.Caption := FormatDateTime('dd.mm.yyyy hh:mm:ss', qrMain.FieldByName(SQL_Names[i]).AsDateTime);
            else
              ListItem.Caption := qrMain.FieldByName(SQL_Names[i]).AsString;
            bFirst := False;
          end
          else
          begin
            if SQL_Names[i] = 'First_Eventthen
              ListItem.SubItems.Add(qrMain.FieldByName(FormatDateTime('dd.mm.yyyy hh:mm:ss', qrMain.FieldByName(SQL_Names[i]).AsDateTime));
            else
              ListItem.SubItems.Add(qrMain.FieldByName(SQL_Names[i]).AsString);
          end;
        end;
      end;
      gauge1.progress := gauge1.progress + 1;
    end;
    lvAnzeige.Items.EndUpdate;
    gauge1.progress := 0;
    gauge1.Visible:= false;
  finally
    dbMain.Connected:=False; //Verbindung trennen
    Screen.Cursor := Cursor;
  end;
end;
Also, das Programm braucht noch eine CheckListBox, in der drinnensteht, welche Spalten angezeigt werden sollen. Alternativ kannst du auch ein Array verwenden. Vor dem Einfügen von Daten in die Listview werden die Spalten nochmals neu eingetragen. Anschließend geht die Schleife alle Spalten durch, und falls eine Spalte angezeigt werden soll, wird der Text hinzugefügt. Die Unterscheidung mit bFirst ist hoffentlich offensichtlich, da das erste Element mit Caption, die nachfolgenden aber über SubItems angesprochen werden. Ich hoffe der Code funzt, ich habe ihn nicht getestet.
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  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 19:22 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