Einzelnen Beitrag anzeigen

Benutzerbild von celinaw
celinaw

Registriert seit: 2. Apr 2004
162 Beiträge
 
#4

Re: Listview Spalten zur Laufzeit?

  Alt 29. Apr 2004, 23:02
Hi...

Kann sich mal einer ansehen was hier nicht stimmt

Alcaeus versucht mir zu helfen eine Listview mit den Felder zu füllen, die in der Checklistbox
gewählt sind.




Delphi-Quellcode:
//###########################################################################

const Spalten=3;

const SQL_Names: array [0..Spalten-1] of String = ('Order_Type', 'Order_Number', 'Customer_Number');
const List_Names: array [0..Spalten-1] of String = ('Type', 'Auftrag', 'Kunde');


procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  Memo1.Lines.Clear;
  for i := 0 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;
  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.Customer_Number;';

    qrMain.Open;
    qrMain.FieldByName('Order_Type').AsString;
    gauge1.Visible:= True;
    gauge1.maxvalue := qrMain.recordcount;
    lvAnzeige.Items.BeginUpdate;
    lvAnzeige.Columns.Clear;
    for i := 0 to Spalten-1 do
    begin
      if CheckListBox1.Checked[i] then
        lvAnzeige.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
             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;

Gruß Celina
  Mit Zitat antworten Zitat