Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Fragen zu Record?


jackie05 - So 28.12.08 16:29
Titel: Fragen zu Record?
Hallo,
ich habe ein eigene Datentyp erzeugt, beispiel:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
type
  TKommentare = record
    Panels: TPanel;
    Labels: TLabel;
    Bewertung: TJvLED;
    Datum: string;
  end;


und wenn ich jetzt ein paar Kommentare erzeuge, möchte ich das man mit ScrollBar1 nach unten oder nach oben scrollen kann, da ich Kommentare untereinander erstelle.

Ich hab das mal so versucht:

Delphi-Quelltext
1:
2:
3:
4:
procedure TForm2.ScrollBar1Change(Sender: TObject);
begin
  Kommentare.Panels.Top := -ScrollBar1.Position;
end;


Das problem ist, das immer nur das letzte Kommentar gescrollt wird, also das zuletzt erstellte TKommentare.

Ich hab das ohne Array gemacht, also:

Delphi-Quelltext
1:
2:
3:
var
  Form2: TForm2;
  Kommentare: TKommentare;


Wie könnte ich jetzt alle Kommentare abfragen, damit alle Kommentare gescrollt werden können?

Ich bedanke mich schonmal im Voraus.

MfG


Delete - So 28.12.08 16:32

Zitat:

Delphi-Quelltext
1:
2:
3:
var
  Form2: TForm2;
  Kommentare: TKommentare;


Kommentare ist somit genau ein einziger Record. Willst Du mehrere davon, musst Du Dir eine Liste, ein dynamisches Array o.ä. von TKommentare erzeugen.


mkinzler - So 28.12.08 16:33

Oder einer Liste, Baum ...


Delete - So 28.12.08 16:36

Hab ich doch gesagt :gruebel:


jackie05 - So 28.12.08 19:24

Danke euch beiden.

Ich hab das dann über Arrays gemacht.

Noch ein Problem habe ich und zwar, wenn ich über ScrollBar Scrollen möchte, dann Scrollt er nur nach oben:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm2.ScrollBar1Change(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to MaxCount do
  begin
    Kommentare[i].Panels.Top := Kommentare[i].Panels.Top - ScrollBar1.Position;
  end;
end;


Wenn ich das so mache:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm2.ScrollBar1Change(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to MaxCount do
  begin
    Kommentare[i].Panels.Top := -ScrollBar1.Position;
  end;
end;


dann werden alle Kommentare an Top Position 0 gesetzt und dann gescrollt.

Wie könnte ich das problem beheben?

MfG


jackie05 - Mo 29.12.08 00:00

Hallo nochmal,
gibt es in Delphi 7 eine Frame wo man dort alles drauf packen kann?
Aslo mit Scrollbalken, sowie bei Websites wenn man ein teil der seite in Frames anzeigen lässt.

EDIT: Man kann ja ein Frames erzeugen unter Datei->Neu->Frame, aber ich möchte eine Frame auf mein Form2 erzeugen, geht das denn irgendwie?

EDIT: Ich habs hinbekommen, aber wie erzeuge ich ein Panel auf diese Frame?
Ich hab das mal so versucht:


Delphi-Quelltext
1:
Kommentare[j].Panels := TPanel.Create(Frame4);                    


Danke schonmal.

MfG


jaenicke - Mo 29.12.08 00:21

TFrame hast du falsch verstanden, das ist etwas anderes als ein Frame in Webseiten, etwas ähnlich, aber eigentlich etwas ganz anderes.
Du erstellst z.B. einen TFrame mit zwei Knöpfen, Ok und Abbrechen. Danach kannst du diesen Frame dann überall in deinem Projekt einsetzen auf allen Formularen. Änderst du dann im TFrame etwas, wird das überall geändert.

Was du vermutlich brauchst, ist eine TScrollBox, die stellt eine scrollbare Fläche innerhalb z.B. eines Formulars dar, in die du andere Komponenten legen kannst.


jackie05 - Mo 29.12.08 00:30

Danke Dir.

Ich habs mit TFrame hinbekommen und kann dort schön meine Einträge anzeigen lassen.

ScrollBox wäre auch eine gute idee, aber ich lass das ambesten mal so.

Vielen Dank.

MfG