Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Komisches Verhalten des Fensters (https://www.delphipraxis.net/97619-komisches-verhalten-des-fensters.html)

dominikkv 13. Aug 2007 18:27


Komisches Verhalten des Fensters
 
Hi

ich habe folgende Deklaration:
Delphi-Quellcode:
type
  TfSoFi = class(TForm, IDropSource)
    SuchEdit: TEdit;
    GroupBox1: TGroupBox;
    edTitelSuch: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    edInterpretSuch: TEdit;
    Label3: TLabel;
    edAlbumSuch: TEdit;
    Label4: TLabel;
    Label5: TLabel;
    edGenreSuch: TEdit;
    ImageList1: TImageList;
    GroupBox2: TGroupBox;
    Label8: TLabel;
    Label9: TLabel;
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    DBLaden: TMenuItem;
    DBSpeichern: TMenuItem;
    Schliessen: TMenuItem;
    Hinzufgen1: TMenuItem;
    AusOrdner: TMenuItem;
    AusDB: TMenuItem;
    Hilfe1: TMenuItem;
    Hilfe: TMenuItem;
    Ueber: TMenuItem;
    GroupBox4: TGroupBox;
    rbWinamp: TRadioButton;
    rbMediaPlayer: TRadioButton;
    GroupBox5: TGroupBox;
    rbAbspielen: TRadioButton;
    rbListe: TRadioButton;
    rbStandart: TRadioButton;
    rbSonstiger: TRadioButton;
    Edit1: TEdit;
    Button3: TButton;
    OpenDialog1: TOpenDialog;
    DBUeberpruefen: TMenuItem;
    OpenDialog2: TOpenDialog;
    GroupBox6: TGroupBox;
    Infos: TMemo;
    WebBrowser1: TWebBrowser;
    Image1: TImage;
    rbIntern: TRadioButton;
    StatusBar1: TStatusBar;
    frPlayer1: TfrPlayer;
    frGeordnet1: TfrGeordnet;
    Optionen: TMenuItem;
    pcPlayerControl: TPageControl;
    tsPlayer: TTabSheet;
    tsRadio: TTabSheet;
    frRadio1: TfrRadio;
    imli: TImageList;
    Updates: TMenuItem;
    SearchEx: TButton;
    procedure Button1Click(Sender: TObject);
    procedure SuchEditChange(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure DBLadenClick(Sender: TObject);
    procedure DBSpeichernClick(Sender: TObject);
    procedure SchliessenClick(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure DBUeberpruefenClick(Sender: TObject);
    procedure AusDBClick(Sender: TObject);
    procedure UeberClick(Sender: TObject);
    procedure SuchEditKeyPress(Sender: TObject; var Key: Char);
    procedure FormDestroy(Sender: TObject);
    procedure WebBrowser1DocumentComplete(ASender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    procedure AusOrdnerClick(Sender: TObject);
    procedure OptionenClick(Sender: TObject);
    procedure SearchExClick(Sender: TObject);
    procedure UpdatesClick(Sender: TObject);
    function QueryContinueDrag(fEscapePressed: BOOL;
      grfKeyState: Longint): HResult; stdcall;
    function GiveFeedback(dwEffect: Longint): HResult; stdcall;
    procedure GetWords(s: string; woerter: TStrings);
    function such(Txt, Pattern: string): boolean;
  private
    const
      Delimiters = [#1..#47, #58..#64, #91..#96, #123..#191, #215, #216, #247, #248];
      Delimiters_0 = [#0] + Delimiters;
    var
      FDragStartPos: TPoint;
      FInter,
      FAlb,
      FDarfListen: Boolean;
      FZeitBenötigt: Cardinal;
    procedure AppException(Sender: TObject; E: Exception);
    procedure WndProcAddFile(var Msg: TMessage);
    procedure WMDROPFILES(var Msg: TMessage);
    procedure LBWindowProc(var Message: TMessage);
    procedure BeendenPrc(Var msg: TMessage); message WM_USER + 458;
    procedure LoadImages;
  protected
    procedure WndProc(var Msg: TMessage); override;
  public
    property ZeitBenötigt: Cardinal read FZeitBenötigt write FZeitBenötigt;
  end;
Jetzt fügt er immer wenn ich eine neue Komponente auf die Form ziehe oder wenn ich eine Ereignisroutine im OI erstelle die Deklarationen im Public-Teil der Form ein, und nicht direkt unter dem Namen:
Delphi-Quellcode:
type
  TfSoFi = class(TForm, IDropSource)
    // hier sollte die Deklaration erscheinen
  private

  public
    // hier wird deklariert ...
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;
Außerdem geht das automatische vervollständigen der Klasse (Umsch+Strg+C) nicht.
Es kommt die Fehlermeldung:
Zitat:

---------------------------
Fehler
---------------------------
END erwartet, aber ']' gefunden in Klasse TfSoFi.
---------------------------
OK Details >>
---------------------------
und die Zeile
Delphi-Quellcode:
Delimiters = [#1..#47, #58..#64, #91..#96, #123..#191, #215, #216, #247, #248];
wird gleichzeitig als fehlerhaft angezeig.

Kompilieren lässt sich das Projekt aber ohne Probleme.
Dieses Problem tritt auch nur bei dieser Klasse auf... alle Forms in dem Projekt verhalten sich normal.

Hat jemand eine Idee woran das liegt?
mfg.Dominik

uligerhardt 13. Aug 2007 18:42

Re: Komisches Verhalten des Fensters
 
Die IDE benutzt für viele Zwecke einen anderen Parser als der Compiler, und zwar einen weniger perfekten. Deshalb klappen Sachen wie Klassenvervollständigung etc. nicht, wenn du esoterische oder - wie in deinem Fall - neumodische Konstrukte verwendest. Ich hab's mittlerweile aufgegeben, in solchen Fällen mit der IDE zu streiten und weiche halt auf Syntax auf, die der Parser verdauen kann. An deiner Stelle würde ich die Deklaration der beiden Delimiter-Sets in den implementation-Teil der Unit verlegen, dann müsste eigentlich alle Probleme verschwinden. :)

HTH,
Uli.

dominikkv 13. Aug 2007 19:00

Re: Komisches Verhalten des Fensters
 
toll... das funktioniert ja sogar...
danke uligerhardt für deine hilfe


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