AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Labels nicht in Form1 deklarieren, aber dort anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

Labels nicht in Form1 deklarieren, aber dort anzeigen

Ein Thema von hagi2 · begonnen am 20. Mär 2004 · letzter Beitrag vom 22. Mär 2004
Antwort Antwort
hagi2

Registriert seit: 21. Dez 2003
16 Beiträge
 
#1

Labels nicht in Form1 deklarieren, aber dort anzeigen

  Alt 20. Mär 2004, 13:24
Ich habe das Form1 mit der dazugehörigen Klasse in Unit1. In Form1 sollen später bestimmte Labels kurzzeitig angezeigt werden. Sie sollen im Quelltext erzeugt werden. Jetzt möcht ich die aber nicht in Form1 deklarieren sondern in einer anderen Klasse (irgendwo in Unit 2 z.b.). Geht das irgendwie, sodass sie dann beim Aufrufen der entsprechenden Klasse/Prozedur in Form1 zu sehen sind?
  Mit Zitat antworten Zitat
Wheelie

Registriert seit: 21. Okt 2003
Ort: Dresden
177 Beiträge
 
#2

Re: Labels nicht in Form1 deklarieren, aber dort anzeigen

  Alt 20. Mär 2004, 13:34
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  NewLabel: TLabel;
begin
  NewLabel := TLabel.Create(Form1);
  NewLabel.Parent := Form1;
  NewLabel.Left := 50;
  NewLabel.Top := 50;

  NewLabel.Caption := 'Hallo!';
  NewLabel.Visible := True;
end;
  Mit Zitat antworten Zitat
hagi2

Registriert seit: 21. Dez 2003
16 Beiträge
 
#3

Re: Labels nicht in Form1 deklarieren, aber dort anzeigen

  Alt 20. Mär 2004, 14:31
Hat funktioniert. Danke!
  Mit Zitat antworten Zitat
hagi2

Registriert seit: 21. Dez 2003
16 Beiträge
 
#4

Re: Labels nicht in Form1 deklarieren, aber dort anzeigen

  Alt 20. Mär 2004, 18:17
Ok, es geht doch nicht ganz so, wie es sollte.
Sobald die Prozedur nicht mehr zu TForm1 gehört, sondern zu igendner anderen Klasse, die nicht zu einem Formular gehört, und ich die entsprechende Prozedur irgendwo aufruf, kann ich es zwar komplieren aber dann kommt im Programm nach dem Aufruf der Prozedur: "Access Violation ..."
Weiss aber nicht, was da falsch ist.
  Mit Zitat antworten Zitat
Wheelie

Registriert seit: 21. Okt 2003
Ort: Dresden
177 Beiträge
 
#5

Re: Labels nicht in Form1 deklarieren, aber dort anzeigen

  Alt 20. Mär 2004, 19:02
Zitat von hagi2:
Ok, es geht doch nicht ganz so, wie es sollte.
Sobald die Prozedur nicht mehr zu TForm1 gehört, sondern zu igendner anderen Klasse, die nicht zu einem Formular gehört, und ich die entsprechende Prozedur irgendwo aufruf, kann ich es zwar komplieren aber dann kommt im Programm nach dem Aufruf der Prozedur: "Access Violation ..."
Weiss aber nicht, was da falsch ist.
Hast wahrscheinlich irgendwo nen kleinen Fehler (was für 'ne Feststellung ). Will damit nur sagen, dass es bei mir problemlos geht (auch unitübergreifend). Bevor wir jetzt aber sinnlos rumposten hänge ich die Sache lieber gleich mal mit an mein Posting ran
Angehängte Dateien
Dateityp: zip label.zip (88,8 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
hagi2

Registriert seit: 21. Dez 2003
16 Beiträge
 
#6

Re: Labels nicht in Form1 deklarieren, aber dort anzeigen

  Alt 22. Mär 2004, 13:18
Gut. So funktionierts. Aber so wie ichs gern hätt immer noch nicht. Hier mal ein Bsp-Code:
(unit2 kennt das Formular nicht, deswegen muss es übergeben werden)

Delphi-Quellcode:
// Unit1:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Unit2;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Test: TTest;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Test.anzeigen(Form1, Form1);
end;
Delphi-Quellcode:
//Unit2:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
TTest = class

  procedure anzeigen(Form: TComponent; Cont: TWinControl);
  end;

implementation

procedure TTest.anzeigen(Form: TComponent; Cont: TWinControl);
 var
SpielfeldF: TImage;

begin
SpielfeldF := TImage.Create(Form);
SpielfeldF.Parent := Cont;
SpielfeldF.Width := 200;
SpielfeldF.Height := 400;
SpielfeldF.Top := 100;
SpielfeldF.Left := 200;
SpielfeldF.Visible := true;

SpielfeldF.Canvas.Pen.Color := RGB(100,100,100);
SpielfeldF.Canvas.Rectangle(0,0,SpielfeldF.Height, SpielfeldF.Width);
end;
 end.
So funktionierts. Wenn ich jetzt aber die Deklaration von SpielfeldF nach oben in die Klasse verleg, damit nach der Initialisierung noch andere Prozeduren darauf zugreifen können, kommt "Acess violation". Weiss aber net warum.
  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 18:09 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