AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Informationen aus einem ClientDataSet auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Informationen aus einem ClientDataSet auslesen

Ein Thema von ChristianG · begonnen am 10. Jul 2014 · letzter Beitrag vom 11. Jul 2014
 
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#30

AW: Informationen aus einem ClientDataSet auslesen

  Alt 11. Jul 2014, 14:02
Der Plan hört sich schon mal gut an.

Wenn du jetzt jedem Frame auch noch einen Kontext zuweist aus dem er sich bedienen kann, dann hast du quasi fast alles geschafft.

Die Form selber hat einen Kontext in ViewModel liegen. Dort befindet sich eine Liste ViewModel.Items mit dem Kontext für jeden Frame.

Die Frames werden in einer Liste FItems : TObjectList<TWarenkorbEintragFrame>; verwaltet.

Jeder Frame bekommt nun diesen Kontext zugewiesen:
Delphi-Quellcode:
procedure TForm1.LoadFromModel;
var
  LIdx : Integer;
begin
  // Kein ViewModel, dann alles weg
  if not Assigned( ViewModel )
  then
    begin
      FItems.Clear;
      Summe_Label.Caption := '';
      Exit;
    end;

  // Anzahl der Frames anpassen
  AdjustItems;

  // Zuweisen des Kontexts an die Frames
  for LIdx := 0 to ViewModel.Items.Count - 1 do
      FItems[LIdx].ViewModel := ViewModel.Items[LIdx];

  Summe_Label.Caption := CurrToStrF( ViewModel.Summe, ffCurrency, 2 );
end;
Damit die Anzahl der Frames zur Anzahl der Items passt, hier die Methode um die Frames zu entfernen oder zu erzeugen:
Delphi-Quellcode:
procedure TForm1.AdjustItems;
var
  LFrameItem : TWarenkorbEintragFrame;
  LIdx : Integer;
  LTop : Integer;
  LDiff : Integer;
begin
  // Wenn die Anzahl der Frames nicht mit der Anzahl der Einträge übereinstimmt,
  // dann müssen wir hier tätig werden

  if FItems.Count <> ViewModel.Items.Count
  then
    begin

      // Überflüssige Frames entsorgen

      if FItems.Count > ViewModel.Items.Count
      then
        begin
          LDiff := FItems.Count - ViewModel.Items.Count;
          FItems.DeleteRange( FItems.Count - LDiff, LDiff );
        end;

      // Fehlende Frames hinzufügen

      while FItems.Count < ViewModel.Items.Count do
        begin
          LFrameItem := TWarenkorbEintragFrame.Create( nil );
          LFrameItem.Parent := ScrollBox1;
          FItems.Add( LFrameItem );
        end;

      // Frames positionieren

      LTop := -ScrollBox1.VertScrollBar.Position;

      for LIdx := 0 to ViewModel.Items.Count - 1 do
        begin
          LFrameItem := FItems[LIdx];
          LFrameItem.ViewModel := ViewModel.Items[LIdx];

          LFrameItem.Top := LTop;
          LFrameItem.Left := 0;
          LFrameItem.Width := ScrollBox1.ClientWidth;
          LFrameItem.Anchors := [akLeft, akTop, akRight];

          LTop := LTop + LFrameItem.Height;
        end;

    end;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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:38 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