AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Schaltungen eines Schalplans im Speicher abbilden.
Thema durchsuchen
Ansicht
Themen-Optionen

Schaltungen eines Schalplans im Speicher abbilden.

Ein Thema von gunfran · begonnen am 30. Aug 2007 · letzter Beitrag vom 11. Sep 2007
Antwort Antwort
Seite 1 von 2  1 2      
gunfran

Registriert seit: 25. Apr 2007
Ort: Hamburg
15 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Schaltungen eines Schalplans im Speicher abbilden.

  Alt 30. Aug 2007, 10:29
Guten Tag liebe Leute von Delphi Praxis.

Ich schaue hier schon seit ein paar Wochen rein und da ich gemerkt habe, dass hier viel Kompetenz postet, dachte ich mir ich frag mal nach ob mir hier jemand auf die Sprünge helfen kann.

Ich habe folgendes Problem(e).

1. ich hab sehr wenig Erfahrung in Delphi.

2. möchte ich die Schaltungen eines Schaltplans im Speicher abbilden, um dort möglichst schnell drauf zuzugreifen. Um die etwas zu verdeutlichen, hänge ich einfach mal eine Grafik an. Bei dem Schaltplan handelt es sich um eine Erweiterung einer Stringgrid-Komponente. Wer sich den angehängten Schaltplan einmal angeschaut hat, der sieht in der Aufteilung Rows=Tage und Cols=24 Stunden eines Tages, das dort einige Zahlen in dem Grid stehen. Jede dieser Zahlen soll z.b. eine Werbeschaltung symbolisieren. Wie man sieht können pro Tag und Stunde auch mehrere Schaltungen gesetzt sein.

Eine Schaltungen beinhaltet verschiedene Informationen, wie beispielsweise datum, stunde, länge, preis und noch ein paar.

Nun würde ich gerne erreichen, dass bei einem Klick auf das Grid auf eine Zelle, in der eine oder mehrere Schaltungen gesetzt sind, die Informationen zu den evtl. vorhandenen Schaltungen an anderer Stelle angezeigt werden. (z.b. in einem anderen Grid).

Dazu dachte ich an ein Array, was sozusoagen den Schaltplan abbildet, wo aber an jeder mehr Informationen untergebracht werden können, als in dem Stringgrid und die ich punktgenau ansteuern kann, um mir die Informationen zu der angeklickten Zelle aus dem Speicher holen kann.

Ich hoffe ich habe mich einigermassen klar ausgedrückt, und jemand kann mir da einen Denkanstoss geben.

Wichtig: Ich programmiere hier in Delphi 7 Professional

Meine erste Idee war ein Array aus einem entsprechend der Schaltungsinformation aufgebauten Record. gut? nicht so gut? gehts besser? wenn ja, wie?

Vielen Dank im voraus erstmal

Michael Domscheit

Gruß aus Hamburg
Miniaturansicht angehängter Grafiken
md_4_819.jpg  
Michael D.
  Mit Zitat antworten Zitat
Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Schaltungen eines Schalplans im Speicher abbilden.

  Alt 30. Aug 2007, 10:49
huhu und herzlich willkommen hier..

also die stringgrid componente ist ein erweitertes "standard" grid richtig?
die idee mit dem array ist ansich in ordnung, jedoch würde ich vielleicht den weg bevorzugen, welchen z.b. der TreeView benutzt.

du kannst jedem icon einen datapointer zuweisen. das selbe könnte man auch in die einzelnen zellen des grids bauen.. denke ich - bin leider mit dem grid nicht so vertraut aber ist denke ich machbar.

edit: die funktion scheint schon implementiert... baust dir ein objekt mit deinen daten und weist das dann der zelle zu..


Delphi-Quellcode:
Die Eigenschaft Objects enthält für jede Zelle des Gitters ein Objekt.

Delphi-Syntax:

property Objects [ACol, ARow: Integer]: TObject;

C++ Syntax:

__property System::TObject* Objects[int ACol][int ARow] = {read=GetObjects, write=SetObjects};

Beschreibung

Mit Objects können Sie auf das Objekt zugreifen, das einer bestimmten Gitterzelle zugeordnet ist. Die Eigenschaften ColCount und RowCount legen die Größe des Arrays fest. ACol gibt die Spalte, ARow die Zeile der Zelle an. Die Zählung der Spalten und Zeilen beginnt bei 0.

Hinweis:   Das String-Gitter ist den Objekten in diesem Array nicht übergeordnet. Wenn das String-Gitter freigegeben wird, existieren die Objekte weiter. Sie müssen explizit von der Anwendung freigegeben werden.

gruß
Reli
  Mit Zitat antworten Zitat
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
gunfran

Registriert seit: 25. Apr 2007
Ort: Hamburg
15 Beiträge
 
Delphi 10 Seattle Professional
 
#4

Re: Schaltungen eines Schalplans im Speicher abbilden.

  Alt 30. Aug 2007, 11:33
zuerst einmal vielen Dank für die rasanten Antworten.

Ich werde mich nun erstmal hinsetzen und versuchen mir die Denkansätze begreiflich zu machen und mal testweise zu probieren, ob das was ist.

Melde mich dann nochmal wieder.

Spitzenhilfe erstmal, vielen Dank.
Michael D.
  Mit Zitat antworten Zitat
gunfran

Registriert seit: 25. Apr 2007
Ort: Hamburg
15 Beiträge
 
Delphi 10 Seattle Professional
 
#5

Re: Schaltungen eines Schalplans im Speicher abbilden.

  Alt 30. Aug 2007, 14:27
Eine kleine Übung mit dem zweiten Lösungsansatz hat vermeintlich zu tollen Ergebnissen geführt.

Ich danke dir sehr für diese gute Hilfe.

Jetzt werd ich mich mal ransetzen und das versuchen im "Ernstfall" einzusetzen.

Noch eine Frage. Wenn das funktioniert, wie schalte ich dann ab, dass die Frage geklärt ist? Beim erstellen des Threads wurde ich darauf hingewiesen, dass bei Klärung des Problems, ich dies selber machen muss, kann dies auf dem ersten Blick allerdings noch nicht erkennen.

Edit: Alles klar, ich musste mal meine Brille putzen.
Michael D.
  Mit Zitat antworten Zitat
Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Schaltungen eines Schalplans im Speicher abbilden.

  Alt 30. Aug 2007, 14:35
neue frage neues thema!

ne quatsch... musst deinen ersten post editieren und den haken rausmachen

gruß
reli
  Mit Zitat antworten Zitat
gunfran

Registriert seit: 25. Apr 2007
Ort: Hamburg
15 Beiträge
 
Delphi 10 Seattle Professional
 
#7

Re: Schaltungen eines Schalplans im Speicher abbilden.

  Alt 30. Aug 2007, 14:52
Zitat von Relicted:
neue frage neues thema!

ne quatsch... musst deinen ersten post editieren und den haken rausmachen

gruß
reli
ich dachte, dafür ist unter dem Thread der Button "erledigt" ??
Michael D.
  Mit Zitat antworten Zitat
Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Schaltungen eines Schalplans im Speicher abbilden.

  Alt 30. Aug 2007, 14:55
stimmt auch wieder ich war diesmal bissl verpeilt... falsches forum :-p
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#9

Re: Schaltungen eines Schalplans im Speicher abbilden.

  Alt 30. Aug 2007, 15:01
Hab noch nen kleines kommentiertes Beispiel (kann Fehler enthalten ) eingefügt (hatte nicht gesehen, dass bereits alles paletti ist).

Edit:
Dieses Beispiel legt bei Klick auf Button in der aktuell selektierten Zelle eine zufällige Anzahl Schaltungen (maximal 5 je Zelle) an - hatte keine Lust, das Ganze noch editierbar zu machen.
Sobald die Zelle danach erneut selektiert wird, werden die darin enthaltenen Schaltungen in einer Message ausgegeben.

Edit2:
Kleinen - aber elementaren - Fehler im Beispiel behoben.

Edit3:
Wieviele Fehler man im Nachinein doch noch findet...
Angehängte Dateien
Dateityp: zip schaltung_154.zip (9,2 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#10

Re: Schaltungen eines Schalplans im Speicher abbilden.

  Alt 9. Sep 2007, 14:14
Hallo gunfran,

mich würde interessieren, wie Du Dein Problem letztendlich gelöst hast.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz