Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Probleme mit u.a. Timern in Array

  Alt 24. Apr 2009, 12:36
Zitat von ManuMF:
@Blup: Den Tag nehme ich nur als fortlaufenden Index, der nicht der Position des Kontos im Array entspricht (sonst müsste ich den bei jedem Löschen auch verändern). Der Tag ist mit dem des Timers identisch, dadurch kann ich allen Timern das gleiche Event zuweisen und darin das Konto ermitteln:
Delphi-Quellcode:
procedure TMCForm.PostPruefenAufruf(Sender: TObject);
begin
  PostPruefen(Pred(TTimer(Sender).Tag));
end;
Dann werde ich mich jetzt mal an die Überarbeitung der Lösch-Procedure bzw. die ObjectList machen
Die an die Löschprozedur übergebene lID wird aber als Position des Kontos im Array behandelt.
Zumindest um den Timer zusammen mit dem Eintrag im Array zu löschen.
Wenn diese nicht mit dem Tag des Timer und des MenuItem übereinstimmt, dann muss dieser Tag aus dem Timer ermittelt werden, um das richtige Menüitem zu löschen.
Delphi-Quellcode:
function KontoMenuLoeschen(lTag: Cardinal): Boolean;
var
  i: Integer;
begin
  { MenuItem suchen und löschen } 
  for i := Pred(MCForm.M_Check.Count) downto 0 do
  begin
    Result := (MCForm.M_Check.Items[i].Tag = lTag);
    if Result then
    begin
      MCForm.M_Check.Delete(i);
      Exit;
    end;
  end;
  Result := False;
end;

{...}
KontoMenuLoeschen(MKonten[lID].ITimer.Tag);
FreeAndNil(MKonten[lID].ITimer);
{...}
  Mit Zitat antworten Zitat