Einzelnen Beitrag anzeigen

s-off
(Gast)

n/a Beiträge
 
#3

Re: Schaltungen eines Schalplans im Speicher abbilden.

  Alt 30. Aug 2007, 11:05
Vielleicht folgendes als Ansatz:

Delphi-Quellcode:
Unit Unit1;

Interface

Uses
   Windows,
   Messages,
   SysUtils,
   Variants,
   Classes,
   Graphics,
   Controls,
   Forms,
   Dialogs,
   StdCtrls,
   Grids;

Type
   TForm1 = Class(TForm)
      StringGrid1: TStringGrid;
      Button1: TButton;
      Procedure Button1Click(Sender: TObject);
      Procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
         Var CanSelect: Boolean);
   private
      { Private-Deklarationen }
   public
      { Public-Deklarationen }
   End;

   TSchaltung = Record
      dDatum: TDate;
      iStunde: Integer;
      iLaenge: Integer;
      cPreis: Currency;
      sDiv: String;
   End;

   TSchaltungen = Class(TObject)
   private
      Container: Array Of TSchaltung;
   End;

Var
   Form1: TForm1;

Implementation

{$R *.dfm}

Procedure TForm1.Button1Click(Sender: TObject);
Var
   Schaltungen: TSchaltungen;
   Schaltung1: TSchaltung;
   Schaltung2: TSchaltung;
Begin
   Schaltungen := TSchaltungen.Create;

   Schaltung1.sDiv := 'Diverser Text zu Schaltung 1';
   Schaltung2.sDiv := 'Diverser Text zu Schaltung 2';

   SetLength(Schaltungen.Container, 2);
   Schaltungen.Container[0] := Schaltung1;
   Schaltungen.Container[1] := Schaltung2;

   StringGrid1.Objects[1, 1] := Schaltungen;
End;

Procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; Var CanSelect: Boolean);
Begin
   ShowMessage(TSchaltungen(StringGrid1.Objects[1, 1]).Container[0].sDiv);
End;

End.
Edit: Erläuterung
Du hast eine Klasse abgeleitet von TObject. Du erzeugst für jede StringGrid-Zelle, für welche Du eine Schaltung hinterlegen willst, eine Instanz dieser Klasse.
Die Klasse beinhaltet einen Container; nämlich Dein Array, welches Records speichert, welche jeweils eine Schaltung repräsentieren.

Ich würde nun so vorgehen, dass ich eine Zelle auswähle. Dann klicke ich in einer Toolbar o.ä. einen Edit-Knopf, welcher einen Dialog öffnet. Dort werden dann die Schaltungen für diese Zelle angelegt/editiert.
In diesem Moment erzeugst Du also ein Objekt vom Typ TSchaltungen und für jede Schaltung einen record TSchaltung.

Alle Schaltungen legst Du in Deinem Array ab und ordnest Dein Objekt der aktuellen Zelle zu. Als Wert zeigst Du dann die Anzahl Schaltungen in Deinem Container an.

Sorry, wenn das etwas wirr klingt - ich hoffe, Du kommst damit klar
  Mit Zitat antworten Zitat