Autor Beitrag
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Mo 13.08.07 13:38 
Hy,
ich suche eine Komponente, die im Endeffekt folgendes bietet: Rechts eine Image-Kompo und links eine ListBox. Ich suche deshalb eine Komponente, weil ich (maximal 201 :wink: ) solcher dynamisch erstellen will. Ich habe mir auch schon gedacht, dass man eine Klasse mit Paneln erstellt, die eine Image-Kompo und ListBox-Kompo beinhalten. Allerdings habe ich bis jetzt keine Lust gehabt, mir das selber zu schreiben.
Darum: Gibt es so eine Komponente und wenn nicht: Wo finde ich ein gutes Tutorial zum Erstellen von Komponenten?

MfG
Regan
Marco D.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2750

Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
BeitragVerfasst: Mo 13.08.07 13:40 
Komponente kenne ich keine. Zum Selbermachen: Schon mal eine eigene Klasse geschrieben? Wenn nicht, dann lass es und mach dich damit vertraut. Ansonsten bei www.delphi-source.de gab's sowas irgendwo (unter Tutorials).

_________________
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
Regan Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Mo 13.08.07 13:42 
user profile iconMarco D. hat folgendes geschrieben:
Komponente kenne ich keine. Zum Selbermachen:
Schon mal eine eigene Klasse geschrieben?
Wenn nicht, dann lass es und mach dich damit vertraut.

:gruebel: Wie jetzt. Soll ichs nun lassen oder es machen. Aber die Tuts. schau ich mir mal an.
Marco D.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2750

Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
BeitragVerfasst: Mo 13.08.07 13:46 
Ich meinte, wenn man noch nie eine eigene Klasse geschrieben hat, dann wird's schwierig, weil eine Komponente ja an sich nichts anderes als eine Klasse ist. Wenn du sowas noch nie gemacht hast, dann lies dir erstmal alles zum Thema Klassen/OOP usw. durch und dann das Tutorial zur Komponentenprogrammierung.

_________________
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
Regan Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Di 14.08.07 12:01 
OK, Danke, werd ich machen.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 14.08.07 12:23 
Ich habe dazu einfach eine Scrollbox genommen, in der ich Images und Labels erzeugt habe. Siehe dazu den Anhang.
Einloggen, um Attachments anzusehen!
Regan Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Di 14.08.07 12:26 
Hast du dazu eine eigene Klasse geschrieben, oder lässt du die Elemente dynamisch erzeugen (also wie in arrays)?
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Di 14.08.07 12:28 
Oder du machst einen Frame und der heißt von mir aus "Frame1", dann müsste er doch vom Typ "TFrame1", welcher von TFrame abstammt und diese Objekte draufhat, heißen.
Regan Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Di 14.08.07 12:37 
user profile iconJakob_Ullmann hat folgendes geschrieben:
Oder du machst einen Frame und der heißt von mir aus "Frame1", dann müsste er doch vom Typ "TFrame1", welcher von TFrame abstammt und diese Objekte draufhat, heißen.

Damit habe ich noch nie gearbeitet. Eigentlich will ich das genauso, wie Luckie in dem Bild gezeigt hat, nur, dass rechts die ListBox und links das Image ist.
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Di 14.08.07 12:41 
Ist aber nicht schwer. Du gehst auf "Neu"->Frame (ab D5) und das Fenster besetzt du dann wie ein Formular mit deinen Komponenten. Dann guckst du dir den Code an. Dann guckst du in "Standard" und pickst dir die erste Kompo "TFrame". Dort gibst du in dem Dialog Frame1 an und leitest alle Komponenten von diesem Teil, was dann auf dem Formular erscheint, ab.

Ansprechen must du die Komponenten darauf so, als wäre der Frame ein Formular.
Regan Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Di 14.08.07 12:47 
Ich werde erstmal die Komponenten dynamisch aus array erzeugen und dann auf die Scrollbox setzten. Wenn das nicht so gut funktioniert, dann kann ich ja hier noch mal nachschauen und nachfragen.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 14.08.07 12:58 
Funktioniert wunderbar:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
// Images aus Scrollbox löschen
  if Length(ImgArray) > 0 then
    for i := 0 to Length(ImgArray) - 1 do
      ImgArray[i].Free;
  // Labels aus Scrollbox löschen
  if Length(PageLabelArray) > 0 then
    for i := 0 to Length(PageLabelArray) - 1 do
      PageLabelArray[i].Free;
  // Images und Labels in Scrollbox erstellen
  Setlength(ImgArray, FotoBook.PageCollection.Count);
  Setlength(PageLabelArray, FotoBook.PageCollection.Count);
  for i := 0 to FotoBook.PageCollection.Count - 1 do
  begin
    Img := TImage.Create(ScrollBox1);
    PageLabel := TLabel.Create(ScrollBox1);
    with Img do
    begin
      Parent := ScrollBox1;
      Tag := i;
      OnClick := OnImageClick;

      Width := Round(FotoBook.PageWidth * PAGELISTZOOMFACTOR); //(ScrollBox1.Width - 50) div 2;
      Height := Round(FotoBook.PageHeight * PAGELISTZOOMFACTOR);

      if GetAlignment(i) = plaLeft then
      begin
        Left := 12;
      end
      else
      begin
        Left := 14 + Width;
      end;

      if i = 0 then
        j := 0;
      if i > 0 then
      begin
        if Odd(i) then
          j := i div 2 + 1
        else
          j := i div 2;
      end;
      Top := (Height + 28) * j;

      Canvas.Brush.Color := clWhite;
      Canvas.Pen.Color := clBlack;
      rect.Left := 0;
      rect.Top := 0;
      rect.Bottom := Height;
      rect.Right := Width;
      Canvas.Rectangle(rect);
      //Canvas.TextOut(5, 5, FotoBook.PageCollection.Items[i].Name);

      Canvas.Brush.Color := clGray;
      Canvas.Pen.Color := clBlack;
      with FotoBook.PageCollection.Items[i] do
      begin
        ThumbBitmap := TBitmap.Create;
        for k := 1 to LayersCount - 1 do
        begin
          rect.Left := Round(Layers[k].PosX * PAGELISTZOOMFACTOR);
          rect.Top := Round(Layers[k].PosY * PAGELISTZOOMFACTOR);
          rect.Bottom := Round((Layers[k].PosY + Layers[k].Height) * PAGELISTZOOMFACTOR);
          rect.Right := Round((Layers[k].PosX + Layers[k].Width) * PAGELISTZOOMFACTOR);
          ThumbBitmap.SetSize(rect.Right, rect.Bottom);
          SetStretchBltMode(ThumbBitmap.Canvas.Handle, HALFTONE);
          ThumbBitmap.Canvas.CopyRect(rect, Layers[k].Bitmap.Canvas, Layers[k].Bitmap.Canvas.ClipRect);
          Img.Canvas.CopyRect(rect, ThumbBitmap.Canvas, rect);
        end;
        ThumbBitmap.Free;
      end;
    end;
    s := FotoBook.PageListCaption(i);
    if not Odd(i) then
    begin
    with PageLabel do
      begin
        Parent := ScrollBox1;
        Name := 'PageLabel' + IntToStr(i);
        AutoSize := False;
        Alignment := taCenter;
        Left := 12;
        Width := Img.Width * 2;
        Top := Img.Top + Img.Height + 5;
        Caption := s
      end;
    end;
    ImgArray[i] := Img;
    PageLabelArray[i] := PageLabel;
  end;
Regan Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Di 14.08.07 14:44 
Es funktioniert alles wie ich es wollte. Danke an alle.