Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   kann Unit Forms nicht Finden... (https://www.delphipraxis.net/139887-kann-unit-forms-nicht-finden.html)

Teekeks 7. Sep 2009 17:28


kann Unit Forms nicht Finden...
 
Hallo!
Ich habe ein Problem:
Ich würde gerne eine Form per "Text" (NonVCL) erzeugen, scheitere aber bereits daran die Unit Forms einzubinden (error: dc.lpr(10,21) Fatal: Can't find unit Forms used by dc
---------------------------------------------
dc.lpr(10,46) Error: Unit nicht gefunden: Forms)

Kann mir jemand erklären warum ich das nicht einbinden kann?

Gruß Teekeks

himitsu 7. Sep 2009 17:35

Re: kann Unit Forms nicht Finden...
 
Suchpfade falsch?

erstell doch einfach mal eine neue VCL-Anwendung und schau was dort für Units eingebunden sind (obwohl ich ja dachte, daß diese Unit dort genauso heißt)


PS: das hat nix mit NonVCL zu tun, denn du willst ja die VCL nutzen

Teekeks 7. Sep 2009 17:48

Re: kann Unit Forms nicht Finden...
 
Ich habe ja geguckt wie das bei einer VCL-Anwendung heißt und sogar Kopiert...
Ich wüsste nicht was ich falsch gemacht haben könnte...
Delphi-Quellcode:
program dc;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
//  Classes
  { you can add units after this } Interfaces, // this includes the LCL widgetset
  Forms, main;

{$IFDEF WINDOWS}{$R dc.rc}{$ENDIF}

begin
end.
Delphi-Quellcode:
unit main;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls, ExtCtrls;
type

  { WarnFrm }

  WarnFrm = class(TForm)
    warnmsg:TLabel;
  public
    constructor Create;
  end;


implementation
{ WarnFrm }

constructor WarnFrm.Create;
begin
  warnmsg:=TLabel.Create;
  inherited Create;
end;


initialization
  {$I unit1.lrs}
end.

JamesTKirk 8. Sep 2009 12:58

Re: kann Unit Forms nicht Finden...
 
Hi!

Wenn du unter Lazarus die Unit Forms verwenden willst, dann musst du als Abhängigkeit die LCL hinzufügen, da so dem Compiler die passenden Pfade mitgegeben werden.
Dies erreichst du folgendermaßen:
  • Projekt->Projektinspektor
  • Klick auf "Hinzufügen"
  • Tab "Neue Anforderung"
  • in der Combobox "LCL" raussuchen
  • OK drücken und neu kompilieren

Dein Constructor in deinem Formular ist übrigens auch falsch. Du musst ihn folgendermaßen deklarieren:
Delphi-Quellcode:
constructor Create(aOwner: TComponent); override;
und in der Implementierung musst du unbedingt ein
Delphi-Quellcode:
inherited Create(aOwner);
schreiben.

Du setzt ansonsten die grundlegenden Funktionalitäten eines LCL-Formulars außer Kraft.

Gruß,
Sven

Andreas L. 8. Sep 2009 13:29

Re: kann Unit Forms nicht Finden...
 
Zitat:

Zitat von JamesTKirk
und in der Implementierung musst du unbedingt ein
Delphi-Quellcode:
inherited Create(aOwner);
schreiben.

Und ganz wichtig: Vor den anderen Code. In deinen Code muss die Zeile mit inherited also über warnmsg:=TLabel.Create; stehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:26 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