Einzelnen Beitrag anzeigen

citybreaker
(Gast)

n/a Beiträge
 
#17

Re: Von fremder Form auf ListView zugreifen

  Alt 27. Jun 2008, 15:08
Welchen code willste denn sehen? Die Formulare habe ich mit der IDE und dem OI erstellt,
also nichts Dynamisches oder so.

Das ganze wird ne kleine verwaltung mit mySql. Ich habe einmal eine Procedure mit der ich
mein ListView fülle.

Delphi-Quellcode:
// ausschnitt aus unit funktionen
procedure ListMedien(ListView: TListView);
var q: String;
    ex: boolean;
    i: integer;
begin
  if fMySql.Connect then begin
    if assigned(FResult) then begin
      if FMysql.Status<>MYSQL_STATUS_READY then
        FreeAndNil(FResult);
    end;

    q := 'SELECT * FROM medien';
    fResult := fMySql.query(q,true,ex);
    
    ListView.Clear; // Liste leeren hier passiert jedoch nichts wenn ich das ganze aus Form2 aufrufe
    i := -1;
    fResult.First;
    while not fResult.Eof do begin
      i := i+1;
      ListView.Items.Add;
      ListView.Items[i].Caption := fResult.FieldValueByName('id');
      ListView.Items[i].SubItems.Add(fResult.FieldValueByName('name'));
      ListView.Items[i].SubItems.Add(fResult.FieldValueByName('type'));
      ListView.Items[i].SubItems.Add(fResult.FieldValueByName('gerne'));
      ListView.Items[i].SubItems.Add(fResult.FieldValueByName('lager'));
      ListView.Items[i].SubItems.Add(fResult.FieldValueByName('verliehen'));
      fResult.Next;
    end;
  end;
  ListView.Refresh;

  FreeAndNil(fResult);
end;
Die unit funktionen ist einfach nur eine Unit in dennen ich verschiedene proceduren und funktionen auslager.
Greife ich von meiner Form1 darauf zu, funktioniert das ganze.
Jedoch von Form2 aus passiert nichts. Also habe ich mir den TestButton Button1 erstellt und einfach mal folgendes
probiert.

Delphi-Quellcode:
// auch hiermit keinen erfolg
procedure TForm2.Button1Click(Sender: TObject);
begin
  Label1.Caption := Form1.ListView.Items.Caption; // wahlweise im code beim 2. Buttonklick kommt eben der Fehler vom Thread anfang (siehe Zugriffsverletzung)
  Form2.ListView.Items.Clear;
  Form2.ListView.Refresh;
end;
  Mit Zitat antworten Zitat