![]() |
Listview Spalten zur Laufzeit?
Hi
Hab mal wieder ein Problem! Mit untem stehendem Code füge ich das Abfrage Ergebnis in eine Listview ein. Wie kann ich es jetzt machen, das ich mit Hilfe von Checkboxen auswählen kann welche Spalten aus der SQL Abfrage in das Listview eingefügt werden? Nach möglichkeit möchte ich die Spaltenüberschrift aber weiterhin selber angeben und nicht aus der SQL übernehmen. Z.B. steht in der SQL DB die Spalte "Customer_Number"! Ich möchte aber das Sie in der Listview "Kunden Nr" heißt! Ist das überhaupt machbar? Also im Moment habe ich ja die Spaltenüberschriften fest vorgegeben :gruebel:
Delphi-Quellcode:
procedure TForm1.bSucheClick(Sender: TObject);
var ListItem : TlistItem; begin 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; while not qrMain.Eof do begin ListItem := lvAnzeige.Items.Add; ListItem.Caption:=qrMain.FieldByName('Order_Type').AsString; ListItem.SubItems.Add(qrMain.FieldByName('Customer_Number').AsString); ListItem.SubItems.Add(qrMain.FieldByName('Order_Number').AsString); ListItem.SubItems.Add(FormatDateTime('dd.mm.yyyy hh:mm:ss', qrMain.FieldByName('First_Event').AsDateTime)); ListItem.SubItems.Add(qrMain.FieldByName('DPrint').AsString); ListItem.SubItems.Add(qrMain.FieldByName('PrePrint').AsString); ListItem.SubItems.Add(qrMain.FieldByName('Print').AsString); ListItem.SubItems.Add(qrMain.FieldByName('BMSLogout').AsString); ListItem.SubItems.Add(qrMain.FieldByName('Count_DPrint').AsString); ListItem.SubItems.Add(qrMain.FieldByName('CeWe_Batch').AsString); 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 |
Re: Listview Spalten zur Laufzeit?
Delphi-Quellcode:
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.
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_Event' then 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_Event' then 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; |
Re: Listview Spalten zur Laufzeit?
Hi Alcaeus
:shock: Super !! :thuimb: Du bist ein Schatz! Danke das du dir so viel mühe gemacht hast! Ich werde mal versuchen nachzuvollziehen was du da gemacht hast, und den Code dann testen. :coder: Vielen Vielen Dank! Melde mich wieder... Liebe Grüße Celina |
Re: Listview Spalten zur Laufzeit?
Hi...
Kann sich mal einer ansehen was hier nicht stimmt :gruebel: 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 |
Re: Listview Spalten zur Laufzeit?
Hi Alcaeus :hello:
Irgendwas ist noch falsch :gruebel: Das Programm läuft zwar, aber es wird nichts in die Listview eingetragen. In der CheckListBox hab ich alle 3 Möglichkeiten ausgewählt. In der TlistView werden aber nur zwei Spaltenüberschriften angezeigt :gruebel: Daten kommen leider gar keine. Irgendwo hat sich da ein Fehler ...... :?: Gruß Celina |
Re: Listview Spalten zur Laufzeit?
hallo celina,
nirgendwo wird bfirst gestetzt, der kann keine daten reinschreiben, da bfirst := false ist. raik |
Re: Listview Spalten zur Laufzeit?
Hi Raik :hi:
:gruebel: Bfirst:= true; :?: Ich denke das muss so ausehen oder :?:
Delphi-Quellcode:
Gruß Celina
if CheckListBox1.Checked[i] then
begin if bFirst = true then begin ListItem.SubItems.Add(qrMain.FieldByName(SQL_Names[i]).AsString); |
Re: Listview Spalten zur Laufzeit?
nur wenn bfirst = true ist schreibt er die daten darein.
du hast aber bfirst oben auf false gesetzt, und nie wieder geändert, frage was macht bfirst? raik |
Re: Listview Spalten zur Laufzeit?
:shock:
Zitat:
|
Re: Listview Spalten zur Laufzeit?
schreibe mal zum test bfirst:= true vor die abfrage
Delphi-Quellcode:
if bfirst then
|
Re: Listview Spalten zur Laufzeit?
:wall:
Es geht leider Trozdem nicht :cry: Gruß Celina |
Re: Listview Spalten zur Laufzeit?
setze doch mal einen haltepunkt in diese procedure und gehe mal schrittweise durch,
wenn du eine pe version von delphi hast musst du strg und f5 drücken und dir dort die werte anzeigen lassen. raik |
Re: Listview Spalten zur Laufzeit?
:shock: mom... das teste ich mal :gruebel:
|
Re: Listview Spalten zur Laufzeit?
Geht irgendwie nix. :gruebel:
Weiß garnicht wie und wo ich nen haltepunkt setzen soll. Komme nicht damit klar. Habe soetwas noch nicht gemacht :oops: Gruß Celina |
Re: Listview Spalten zur Laufzeit?
Delphi-Quellcode:
hallo celina, versuche mal so, alles ungetestet
procedure TForm1.bSucheClick(Sender: TObject);
var bFirst: Boolean; i: Integer; ListItem : TlistItem; col:TListColumn; begin ...... for i := 0 to Spalten-1 do // hier werden die spalten namen festgelegt begin col:=lvAnzeige.Columns.Add if CheckListBox1.Checked[i] then col.Caption := List_Names[i]; end; while not qrMain.Eof do begin // hier das item und subitem ListItem := lvAnzeige.Items.Add; with ListItem do begin ListItem.Caption:= qrMain.FieldByName('Order_Type').AsString; for i := 0 to Spalten-1 do begin if CheckListBox1.Checked[i] then 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; raik |
Re: Listview Spalten zur Laufzeit?
Hi,
:shock: WoW.. Danke :love: Ich werde es mal testen und sehen ob es geht! Du hörst von mir.... Gruß Celina |
Re: Listview Spalten zur Laufzeit?
Hi :cry:
Genau das selbe! Es funktioniert immer noch nicht. Irgendwo muss da ein Fehler sein :gruebel: Gruß Celina |
Re: Listview Spalten zur Laufzeit?
fehlermeldung bitte ?
|
Re: Listview Spalten zur Laufzeit?
:shock: Da gibt es keine Fehlermeldung! :gruebel:
Das Programm läuft mit dem Code. Wenn ich das
Delphi-Quellcode:
und
lvAnzeige.Items.BeginUpdate;
Delphi-Quellcode:
mal raus lasse, werden zwei von den drei Spaltennamen angezeigt. Mehr passiert nicht!
lvAnzeige.Items.EndUpdate;
Gruß Celina |
Re: Listview Spalten zur Laufzeit?
schiesse mal ein screenshot vom ergenis, also die spalten in dem listview.
|
Re: Listview Spalten zur Laufzeit?
Liste der Anhänge anzeigen (Anzahl: 1)
Hier ..........
|
Re: Listview Spalten zur Laufzeit?
hallo celina folgender quelltext, liefert zu mindestens erstmal die spaltennamen
Delphi-Quellcode:
einfach ein button und ein listview auf die form, versuche erstmal das listview zu verstehen.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, CheckLst, ComCtrls; const spalten = 3; listcolum: array[0..spalten-1] of string = ('kunde','num','auftrag'); type TForm1 = class(TForm) btn1: TButton; ListView1: TListView; procedure btn1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.btn1Click(Sender: TObject); var i:integer; col:TListColumn; begin for i:=0 to high(listcolum) do begin col:=listview1.Columns.Add; col.Caption:=listColum[i]; end; end; end. so das wars für heute , bis morgen raik |
Re: Listview Spalten zur Laufzeit?
Ja, das funktioniert :mrgreen:
|
Re: Listview Spalten zur Laufzeit?
Delphi-Quellcode:
@celina: Ich habe den Code wiederum nicht getestet, ich habe keine Zeit... aber ich werde mir ihn in naher Zukunft vorknöpfen, aber theoretisch fügt dieser Code alle Spalten hinzu, gibt ihnen Überschriften und fügt Elemente ein, solange welche vorhanden sind.const Spalten = 3; SQL_Names: array [0..Spalten] of String = (<Spaltenname1>, <Spaltenname1>, ...); 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 := True; 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; //** Diese Zeile könnte die Lösung sein. ** qrMain.FetchAll; //***************************************** qrMain.FieldByName('Order_Type').AsString; gauge1.Visible:= True; gauge1.maxvalue := qrMain.recordcount; lvAnzeige.Items.BeginUpdate; lv_Anzeige.Columns.Clear; lv_Anzeige.Items.Clear; for i := 0 to Spalten-1 do //Spaltenarray durchlaufen und alle "gewählten" Spalten hinzufügen. 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; //Neues Element in die ListView for i := 0 to Spalten-1 do //Alle möglichen Spalten durchgehen begin if CheckListBox1.Checked[i] then //Soll die gewählte Spalte angezeigt werden? begin if bFirst then //Ist diese Spalte die erste? begin //ja => Caption setzen if SQL_Names[i] = 'First_Event' then 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 //Nein => SubItem hinzufügen begin if SQL_Names[i] = 'First_Event' then 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; [add]Ich kenne die TZQuery-Komponente ja nicht, aber probier mal den Code einzufügen, der zwischen großen Kommentarstrichen steht. Vielleicht hilft das mit den Items. Außerdem verstehe ich den Sinn der Zeile darunter nicht...wieso ist die drinnen?[/add] |
Re: Listview Spalten zur Laufzeit?
Hi, Guten Morgen Alcaeus! :hi:
Werde ich mal ausprobieren. Melde mich wieder.. Gruß Celina |
Re: Listview Spalten zur Laufzeit?
Hi
Diese Funktion Zitat:
Wofür ist die ? Ich denke die Zeos Kompos werden etwas ähnliches unter einem anderen Namen haben :?: Gruß Celina |
Re: Listview Spalten zur Laufzeit?
FetchAll müsste alle Datensätze in den lokalen Cache holen. Lass dir mal mit ShowMessage ein Meldungsfenster anzeigen, und zwar jedesmal wenn er ein Feld hinzufügen soll, also unter folgender Zeile im Quellcode:
Delphi-Quellcode:
Du fügst einfach
if CheckListBox1.Checked[i] then //Soll die gewählte Spalte angezeigt werden?
begin
Delphi-Quellcode:
ein, dadurch siehst du den Zähler, und du siehst, wieviel Elemente wirklich hinzugefügt werden.
ShowMessage('i='+IntToStr(i));
|
Re: Listview Spalten zur Laufzeit?
Hi
Die Message ist i=0 :gruebel: i=1 i=2 und wieder von vorn.... |
Re: Listview Spalten zur Laufzeit?
Ja, die Ausgabe müsste stimmen, das heißt dass dir deine Werte eingefügt werden. Bist du sicher dass in der Datenbank etwas drinnensteht?
|
Re: Listview Spalten zur Laufzeit?
Hi
Klar bin ich mir sicher :mrgreen: Ich denke das fast 90.000 Datensätze genügen sollten :gruebel: Es funktioniert ja auch der Code den ich bissher verwende. Ist nur leider nicht möglich die Spalten aus zu wählen. Gruß Celina |
Re: Listview Spalten zur Laufzeit?
Ok, 90000 sind ein ganzer Haufen....und du hast wirklich den gesamten Code richtig zusammenkopiert? Ich musste den ersten Code doch ein bisschen ändern...hab mich ein wenig vertan. Zeigt er die Spaltenüberschriften mittlerweile an oder nicht?
|
Re: Listview Spalten zur Laufzeit?
Ja, wie gesagt! Er zeigt von drei gewählten Spalten die ersten beiden an.
Und dann passiert nix mehr. Der Cursor bleibt als Sandur stehen! |
Re: Listview Spalten zur Laufzeit?
Probier mal, diesen Codeteil:
Delphi-Quellcode:
ausukommentieren, und definiere die Spalten manuell, also im Designmodus. Anschließend führe das ganze aus, mich würde interessieren ob er so irgendwelche Werte in die List kriegt...
for i := 0 to Spalten-1 do //Spaltenarray durchlaufen und alle "gewählten" Spalten hinzufügen.
begin if CheckListBox1.Checked[i] then lv_Anzeige.Columns.Add.Caption := List_Names[i]; end; |
Re: Listview Spalten zur Laufzeit?
Liste der Anhänge anzeigen (Anzahl: 1)
Also so funktioniert der Code. Natürlich sind so alle Spalten fest vorgegeben!
Delphi-Quellcode:
procedure TForm1.bSucheClick(Sender: TObject);
var ListItem : TlistItem; begin 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; while not qrMain.Eof do begin ListItem := lvAnzeige.Items.Add; ListItem.Caption:=qrMain.FieldByName('Order_Type').AsString; ListItem.SubItems.Add(qrMain.FieldByName('Customer_Number').AsString); ListItem.SubItems.Add(qrMain.FieldByName('Order_Number').AsString); ListItem.SubItems.Add(FormatDateTime('dd.mm.yyyy hh:mm:ss', qrMain.FieldByName('First_Event').AsDateTime)); ListItem.SubItems.Add(qrMain.FieldByName('DPrint').AsString); ListItem.SubItems.Add(qrMain.FieldByName('PrePrint').AsString); ListItem.SubItems.Add(qrMain.FieldByName('Print').AsString); ListItem.SubItems.Add(qrMain.FieldByName('BMSLogout').AsString); ListItem.SubItems.Add(qrMain.FieldByName('Count_DPrint').AsString); ListItem.SubItems.Add(qrMain.FieldByName('CeWe_Batch').AsString); 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; |
Re: Listview Spalten zur Laufzeit?
Ja, den code kenne ich, aber ich will dass du genau den neuen Code ohne das dynamische Spaltenhinzufügen ausprobierst. Sorry, aber mir gehen langsam auch die Ideen aus. Du könntest auch versuchen, jeden Wert den du zur Liste hinzufügst mit einer Messagebox auszugeben, so kannst du sehen ob die Daten auch wirklich von der Datenbank kommen. Es könnte natürlich auch sein dass irgendwo beim Daten holen ein Fehler ist und deswegen das Programm hängen bleibt. Musst du es immer abschießen?
|
Re: Listview Spalten zur Laufzeit?
Nun, ich werde es mal so versuchen wie du gesagt hast. Einen Fehler beim Datenholen schließe ich allerdings aus, da der andere Code ja auch Problemlos läuft. Melde mich wieder...
Gruß Celina |
Re: Listview Spalten zur Laufzeit?
Also auch wenn ich die Spalten vorgebe und den Code dafür weglasse wird nichts eingefügt!
|
Re: Listview Spalten zur Laufzeit?
Und das mit der MessageBox? Also was ich meine ist, dass du einen Wert in einer MB ausgibst, anstatt ihn nur der List hinzuzufügen:
Delphi-Quellcode:
Dann müsste er dir jedes Element ausgeben, vorausgesetzt er kann es ordnungsgemäß von der Datenbank einlesen.
for i := 0 to Spalten-1 do //Alle möglichen Spalten durchgehen
begin if CheckListBox1.Checked[i] then //Soll die gewählte Spalte angezeigt werden? begin MessageBox(SQL_Names[i]+': '+qrMain.FieldByName(SQL_Names[i]).AsString); |
Re: Listview Spalten zur Laufzeit?
Fehler Inkompatible Typen HWND und String!
|
Re: Listview Spalten zur Laufzeit?
:wall: :wall: :wall: Nicht MessageBox, sondern ShowMessage, sorry
Ich bin übrigens weg, falls du mehr hilfe brauchst: PN oder Mail |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06: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