AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TFrames auf Scrollbar --> FindComponent

Ein Thema von jaikai · begonnen am 13. Jul 2005 · letzter Beitrag vom 13. Jul 2005
Antwort Antwort
jaikai

Registriert seit: 1. Jun 2005
70 Beiträge
 
#1

TFrames auf Scrollbar --> FindComponent

  Alt 13. Jul 2005, 15:08
Hallo Leute,

ich hab'n Problem mit meinen Frames.

Code:
procedure TMainForm.Neues_Blatt(Sender: TObject);
// ... erzeugt neuen Frame innerhalb Scrollbox
// ... TFrameAnzeige = class(TFrame) in separater Unit
var Child: TFrameAnzeige;
begin
  ...
  Child := TFrameAnzeige.Create(ScrollBox1);
  Child.name   := 'Frame' + IntToStr(Anzahl_Neu);
  Child.Caption := Name;
  Child.Parent := MainForm.ScrollBox1;
  Child.SetBounds (0, 0, ScrollBox1.Width -5, 116); // Links, Oben, Weite, Höhe

  with Child.PanelAnzeige do begin
       //(... Größen anpassen)
       end;
end;


procedure TMainForm.Anordnen(Sender: TObject);
var i, k : integer;
begin
    // ...
    // Anzahl_neu ist der Strtoint-Wert der dem Namen angehängt wird
    // ...
    for i := 0 to Anzahl_Neu do
        if (FindComponent('Anzeige' + IntToStr(i)) as TFrameAnzeige) <> nil then
            with (FindComponent('Anzeige' + IntToStr(i)) as TFrameAnzeige) do begin
                // ... nur Positionen lesen und neu setzen - hier unwichtig...
            end;
end;
In der Procedure "Neues_Blatt" wird ein gegebener TFrame erzeugt und (anscheinend) korrekt auf die Scrollbox gelegt. Name ist eindeutig und sollte doch wieder-findbar sein.

In der zweiten Procedure "Anordnen" müßte dieser Frame als Komponente anundfürsich gefunden werden können. Tausche ich das "TFrameAnzeige" gegen "TFrame" aus, passiert auch nichts.
"uses (Unit mit dem Frame) ist auch gesetzt.


Bei mir wird er aber nicht gefunden! Warum, wo liegt der Fehler?
Kann mir bitte jemand helfen?

Danke
Wenn die Programme das machen, wie's wir machen, wären sie unbrauchbar...
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: TFrames auf Scrollbar --> FindComponent

  Alt 13. Jul 2005, 15:51
Delphi-Quellcode:
procedure TMainForm.Neues_Blatt(Sender: TObject);
  // Hier schreibst du 'Frame'
  Child.name := 'Frame' + IntToStr(Anzahl_Neu);
  ...
  // und hier wird nach 'Anzeige' gesucht !!!!
        if (FindComponent('Anzeige' + IntToStr(i)) as TFrameAnzeige) <> nil then
            with (FindComponent('Anzeige' + IntToStr(i)) as TFrameAnzeige) do begin
Andreas
  Mit Zitat antworten Zitat
jaikai

Registriert seit: 1. Jun 2005
70 Beiträge
 
#3

Erratum meinerseits....

  Alt 13. Jul 2005, 16:58
Danke,
das war aber bloß ein Kopierfehler! Ärgerlich - Asche auf mein Haupt...

Richtiger:

Code:
procedure TMainForm.Neues_Blatt(Sender: TObject);
// ... erzeugt neuen Frame innerhalb Scrollbox
// ... TFrameAnzeige = class(TFrame) in separater Unit
var Anzeige : TFrameAnzeige; // ob global oder hier müßte egal sein
begin
  ...
  Anzeige := TFrameAnzeige.Create(ScrollBox1);
  Anzeige.name   := 'Anzeige' + IntToStr(Anzahl_Neu);
  Anzeige.Parent := MainForm.ScrollBox1;
  Anzeige.SetBounds (0, 0, ScrollBox1.Width -5, 116); // Links, Oben, Weite, Höhe

  // ... Name eindeutig, Positionierung auf Defaultwerte 0,0 ..

end;


procedure TMainForm.Anordnen(Sender: TObject);
var i : integer;
begin

    // Anzahl_neu ist der Strtoint-Wert der dem Namen angehängt wird
 
    for i := 0 to Anzahl_Neu do
        if (FindComponent('Anzeige' + IntToStr(i)) as TFrameAnzeige) <> nil then
            with (FindComponent('Anzeige' + IntToStr(i)) as TFrameAnzeige) do begin
                // ... nur Positionen lesen und neu setzen - hier unwichtig...
            end;
end;
---

Aber die Korrektur dessen bringt mir auch keinen Erfolg.

In der Procedure "Neues_Blatt" wird ein gegebener TFrame erzeugt und korrekt auf die Scrollbox gelegt. Name ist eindeutig und sollte doch wieder-findbar sein.

In der zweiten Procedure "Anordnen" müßte dieser Frame als Komponente anundfürsich gefunden werden können. Meineserachtens ist "TFrameAnzeige" immer noch richtig in FindComponent und muß nicht durch TFrame ersetzt werden.

Muß denn irgendwas verbogen werden, damit damit das Prog meine Komponenten wiederfindet?
Alle 'Align' sind auf "alNone" gesetzt und ich will doch nur nach gewissen Kriterien manuell sortieren.


2. Frage: Müssen die Komponenten aus "TFrameAnzeige" (type TFrameAnzeige = class(TFrame)...) ggf. oben im Hauptprogramm wiederholt werden, doch wohl nicht?

Ich bin betriebsblind...

Danke
Wenn die Programme das machen, wie's wir machen, wären sie unbrauchbar...
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: TFrames auf Scrollbar --> FindComponent

  Alt 13. Jul 2005, 17:12
Beim Erzeugen der Frames gibst du als Owner die Komponente Scrollbox1 an.
Anzeige := TFrameAnzeige.Create(ScrollBox1); Also müsstest du auch die Komponente als Startpunkt für Findcomponent verwenden.
Ausserdem kann man du Verwenden der lokalen Variablen compi & frameanzeige viel bequemer arbeiten.
Delphi-Quellcode:
var i : integer;
  compi : TComponent;
  frameanzeige : TFrameAnzeige
begin
    // Anzahl_neu ist der Strtoint-Wert der dem Namen angehängt wird
    for i := 0 to Anzahl_Neu do
    begin
        compi := ScrollBox1.FindComponent('Anzeige' + IntToStr(i));
        if Assigned(compi) then
        begin
           frameanzeige := compi as TFrameAnzeige;
             // ... nur Positionen lesen und neu setzen - hier unwichtig...
        end;
   end;
end;
Andreas
  Mit Zitat antworten Zitat
jaikai

Registriert seit: 1. Jun 2005
70 Beiträge
 
#5

thx

  Alt 13. Jul 2005, 19:21
Danke,

ich könnt' dich knutschen...
Wenn die Programme das machen, wie's wir machen, wären sie unbrauchbar...
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:40 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