AGB  ·  Datenschutz  ·  Impressum  







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

FindComponent in einem Frame

Ein Thema von Ykcim · begonnen am 28. Jan 2014 · letzter Beitrag vom 28. Jan 2014
Antwort Antwort
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#1

AW: FindComponent in einem Frame

  Alt 28. Jan 2014, 10:57
Hallo,

Das ist der Aufbau meines Frames:

Delphi-Quellcode:
unit FrameHelpTablesUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, AdvPageControl, ComCtrls, Grids, AdvObj, BaseGrid, AdvGrid, ExtCtrls,
  TGridDesignUnit, StdCtrls, AdvEdit;

type
  TFrame_HilfsTabellen = class(TFrame)
    Panel_Left: TPanel;
    Grid_HelpList: TAdvStringGrid;
    Page_HelpList: TAdvPageControl;
    TabSheet_Abteilungen: TAdvTabSheet;
    TabSheet_Adresse: TAdvTabSheet;
    TabSheet_Branche: TAdvTabSheet;
    TabSheet_Gruppe: TAdvTabSheet;
    TabSheet_Sprache: TAdvTabSheet;
    TabSheet_Status: TAdvTabSheet;
    TabSheet_Unternehmen: TAdvTabSheet;
    Panel_Abteilungen_Titel: TPanel;
    Panel_Adresse_Titel: TPanel;
    Panel_Branche_Titel: TPanel;
    Panel_Gruppe_Titel: TPanel;
    Panel_Sprache_Titel: TPanel;
    Panel_Status_Titel: TPanel;
    Panel_Unternehmen_Titel: TPanel;
    Panel_Abteilung_GridTitel: TPanel;
    AdvStringGrid1: TAdvStringGrid;
    Panel1: TPanel;
    AdvEdit1: TAdvEdit;
    procedure FrameResize(Sender: TObject);
    procedure Grid_HelpListClickCell(Sender: TObject; ARow, ACol: Integer);
    procedure Grid_HelpListSelectionChanged(Sender: TObject; ALeft, ATop,
      ARight, ABottom: Integer);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

implementation

Das ist der Procedureaufruf
Delphi-Quellcode:
procedure TFrame_HilfsTabellen.Grid_HelpListSelectionChanged(Sender: TObject;
  ALeft, ATop, ARight, ABottom: Integer);
begin
   Page_HelpList.ActivePage:=Frame_Hilfstabellen.FindComponent('TabSheet_'+Grid_HelpList.Cells[1,Grid_HelpList.Row]) as TAdvTabSheet;
end;
Aber er erkennt Frame_Hilfstabellen nicht. Ich bekomme die Fehlermeldung:"Formular "Frame_Hilfstabellen" referenziert Formular Frame_Hilfstabellen das in der Unit FrameHelpTablesUnit deklariert ist, aber nicht in Ihrer Uses-List steht. Möchten Sie es hinzufügen?"

Wenn ich dann ja sage, fügt er es in der Uses-Liste hinzu und gibt mir dann den Fehler:
[DCC Fataler Fehler] FrameHelpTablesUnit.pas(47): F2092 Das Programm oder die Unit 'FrameHelpTablesUnit' ruft sich selbst wieder auf Was ja auch logisch ist.

Kann mir jemand sagen, warum das bei einem Frame so schwierig ist?

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#2

AW: FindComponent in einem Frame

  Alt 28. Jan 2014, 11:00
Du bist doch in einer Methode des Frames. Müsste daher
Page_HelpList.ActivePage := FindComponent('TabSheet_'+Grid_HelpList.Cells[1,Grid_HelpList.Row]) as TAdvTabSheet; nicht genügen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#3

AW: FindComponent in einem Frame

  Alt 28. Jan 2014, 11:11
Ja, reicht...

Vielen Dank
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: FindComponent in einem Frame

  Alt 28. Jan 2014, 11:22
Du bist doch in einer Methode des Frames. Müsste daher
Page_HelpList.ActivePage := FindComponent('TabSheet_'+Grid_HelpList.Cells[1,Grid_HelpList.Row]) as TAdvTabSheet; nicht genügen?
Nicht nur nicht genügen, sondern wo ist denn diese ominöse Variable Frame_Hilfstabellen deklariert?
Wer die findet kriegt ein Bier

Hoffentlich hilft das dabei in der Zukunft eben nicht mehr diese globalen Form-/DataModule-Variablen zu benutzen.

Diese innerhalb der gleichen Klasse zu benutzen ist mMn grob fahrlässig!
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#5

AW: FindComponent in einem Frame

  Alt 28. Jan 2014, 11:30
Ähm, das verstehe ich nicht. Ich habe ein Frame mit dem Name Frame_HilfsTabellen angelegt und die Unit dieses Frames unter FrameHelpTablesUnit.pas abgespeichert. Warum ist das fahrlassig?

Gruß
Patrick
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.475 Beiträge
 
Delphi 12 Athens
 
#6

AW: FindComponent in einem Frame

  Alt 28. Jan 2014, 12:00
Verwende jetzt mal diesen Frame mehrmals und überleg, was dann passiert?

In der Variable steht dann vermutlich immer nur die letzte Instanz und Frame1 würde dann auf Frame2 zugreifen, anstatt auf sich selber.
Also innerhalb einer Klasseninstanz niemals über eine externe Variable gehen.

Es ist schon vorgekommen, daß jemand "ausversehn" die MainForm vom Delphi hatte doppelt erstellen lassen
und wunderte sich dann, daß über Form1.Edit1.Text irgendwie nicht das ausgelesen werden konnte, was man in das Edit reinschrieb.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (28. Jan 2014 um 12:02 Uhr)
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#7

AW: FindComponent in einem Frame

  Alt 28. Jan 2014, 17:15
Ok, dieses Thema würde ich gerne in einem anderen Thread vertiefen. Mich interessiert nämlich brennend, wie ich Daten von Unit zu Unit übergebe, ohne sie untereinander einzubinden.

In diesem Falle habe ich mir (nach meinem Verständnis) nix zu Schulden kommen lassen. Die Variable Frame_Hilfstabellen gibt es nämlich garnicht - es haette TFrame_Hilfstabellen heißen müssen, was er aber nicht gefunden hatte. Und weil ich dem Frame den Name Frame_Hilfstabelle gegeb hatte, habe ich es damit versucht, was er aber auch nicht gefunden hat.

Sorry

Gruß und vielen Dank an alle!

Patrick
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.475 Beiträge
 
Delphi 12 Athens
 
#8

AW: FindComponent in einem Frame

  Alt 28. Jan 2014, 17:34
Mich interessiert nämlich brennend, wie ich Daten von Unit zu Unit übergebe, ohne sie untereinander einzubinden.
Ohne geht einfach nicht.

Wenn du auf etwas einer anderen Unit zugreifen willst, dann mußt du zwangsweise die andere Unit einbinden.

Oder eine weitere Unit, wo die gewünschte Funktion durchgeschleift wurde.
Wobei die andere Unit in der Weiteren eingebunden ist usw., also es bleibt bei der Abhängigkeit.

Sollen beide Units keine direkte Abhängigkeit besitzen, dann muß das gemeinsame in eine weitere gemeinsam genutzte Unit rein, welche in Beiden units eingebunden wird.



Alternativ kann man maximal noch Methoden der IPC prozessintern nutzen.
> Ports, Named-Pipes, Named-MMFs, Register-Messages an "definierte" Fenster usw.
FastMM macht das im Shared-Mode z.B. so, wo sich die erste Instantz im Prozess namentlich erkenntlich macht und die nächsten Instanzen, leiten dann auf Diese um.
Und die VCL nutzt ein ATOM an den Fenstern, für seine Verlinkung zwischen TWinControl und HWND.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (28. Jan 2014 um 17:38 Uhr)
  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 12:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz