Delphi-PRAXiS
Seite 1 von 2  1 2      

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 Einfluss BorderStyle auf Komponenten (https://www.delphipraxis.net/39504-einfluss-borderstyle-auf-komponenten.html)

aschne1 3. Feb 2005 15:57


Einfluss BorderStyle auf Komponenten
 
Hallo

Folgendes Problem: Ich erzeuge Unterformulare und platziere diese in einem Panel des Hauptformulars. Solange ich den BorderStyle auf bsNone einstelle funktioniert alles prima. Sobald der Wert nicht mehr bsNone ist, erscheint das Formular deaktiviert. Nur das Schliessen (mit X) ist möglich, eine Eingabe in z.B TEdit ist nicht möglich. Woran liegt das?

Danke für Eure Hilfe

Gruss

Shaman 3. Feb 2005 16:01

Re: Einfluss BorderStyle auf Komponenten
 
Hoi

Das Problem hab ich genau auch einmal gehabt. Ich hab alles mögliche versucht, aber keine Lösung gefunden. Denke mal darüber nach, auf MDI-Childs umzusteigen. Aber die haben halt auch ihre Macken, vorallem lassen sie sich nicht auf Panels setzen :?

Gruss
Shaman

alcaeus 3. Feb 2005 16:03

Re: Einfluss BorderStyle auf Komponenten
 
Hallo aschne1,

das Verhalten ist mir unbekannt. Ich werde das mal heute auf der Heimfahrt probieren, bei mir funktioniert es nämlich prächtig...

Greetz
alcaeus

alcaeus 3. Feb 2005 17:53

Re: Einfluss BorderStyle auf Komponenten
 
So..ich habs jetzt unterwegs probiert, und bei allen BorderStyles dasselbe Ergebnis.
Ich habe ein Panel auf ein Form gesetzt, und ein zweites Form (mit Edit) zur Laufzeit auf das Panel. Wurde ein BorderStyle ungleich bsNone gesetzt, so sieht das Form zwar so aus als ob es inaktiv waere, auf das Edit konnte ich aber normal zugreifen.
Ich verstehe also nicht woher der Bug kommt :gruebel:

Greetz
alcaeus

aschne1 3. Feb 2005 22:03

Re: Einfluss BorderStyle auf Komponenten
 
Hallo

Danke für Eure Bemühungen.

@alcaeus
Bei mir kann ich nur über die Tab-Taste die TEdits anspingen, mit der Maus anklicken geht nicht. Ich denke, wenn ich das Formular aktivieren kann (Titelleiste nicht so blass), dann funktioniert auch die Maus wieder?

Eine andere Möglichkeit sehe ich darin dem Panel mit bsNone eine neue Komponente 'Titelbalken' hinzuzufügen. Was hälst Du davon? Gibt es so etwas fertig oder soll ich diese selbst erstellen?

Danke und Gruss

Robert_G 3. Feb 2005 22:30

Re: Einfluss BorderStyle auf Komponenten
 
Moin Armin,
Als kleiner Dennkanstoss: Rate mal wofür es Delphi-Referenz durchsuchenTFrame gibt. ;)
Auf die Art kannst du visuell ein ContainerControl mit Untercontrols basteln und wie bei Forms auch -> voneinander ableiten! :)

alcaeus 4. Feb 2005 04:50

Re: Einfluss BorderStyle auf Komponenten
 
Zitat:

Zitat von Robert_G
Als kleiner Dennkanstoss: Rate mal wofür es Delphi-Referenz durchsuchenTFrame gibt. ;)
Auf die Art kannst du visuell ein ContainerControl mit Untercontrols basteln und wie bei Forms auch -> voneinander ableiten! :)

Diese Einstellung hatte ich auch bis vor kurzem, aber versuch mal ein Frame mit ActionBand-Controls zu erstellen. In D7 scheiterst du bereits beim ActionManager auf dem Frame :roll:

Greetz
alcaeus

Jens Schumann 4. Feb 2005 07:39

Re: Einfluss BorderStyle auf Komponenten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe die Lösung in den tiefen meiner Platte gefunden.
Das Child-Formular hat einen zweiten und erweiterten Constructor bekommen. Damit kann man das Ding wie ein normales Formular aufrufen und man übergibt dem Constructor noch einen Parent. Grundsätzlich habe ich den Code damals bei Hagen abgeschrieben (glaube ich).
Delphi-Quellcode:
unit formchild_frm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls;

type
  TFormChild = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
  private
    { Private-Deklarationen }
    FAsChild: Boolean;
    FTempParent: TWinControl;
  protected
    procedure CreateParams(var Params: TCreateParams); override;
    procedure Loaded; override;
  public
    { Public-Deklarationen }
    constructor Create(AOwner: TComponent); overload; override; // als Formular aufrufen
    constructor Create(AOwner: TComponent;AParent: TWinControl); reintroduce; overload; // als Child aufrufen
    end;

var
  FormChild: TFormChild;

implementation

uses Utils1;

{$R *.DFM}

constructor TFormChild.Create(AOwner: TComponent);
begin
  FAsChild := False;
  inherited Create(AOwner);
end;

constructor TFormChild.Create(AOwner: TComponent; AParent: TWinControl);
begin
  FAsChild := True;
  FTempParent := aParent;
  IsControl:=True;
  inherited Create(AOwner);
end;

procedure TFormChild.CreateParams(var Params: TCreateParams);
begin
  Inherited CreateParams(Params);
  if FAsChild then
    Params.Style := Params.Style or WS_CHILD;
end;

procedure TFormChild.Loaded;
begin
  inherited;
  if FAsChild then
  begin
    Align := alNone;
   // BorderStyle := bsNone;
   // BorderIcons := [];
    Parent := FTempParent;
    Position := poDefault;
  end;
end;

end.
Hier kommt der das Aufruf des Formulars als Child
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  If Not Assigned(aChildForm) then
    aChildForm:=TFormChild.Create(Application, Panel2);
  With aChildForm do
    begin
    Edit1.text:='Delphi';
    Edit2.Text:='Praxis';
    Show;
    end;
  // Die Message sorgt dafür, dass man die Controls auf dem Form verwenden
  // kann
  SendMessage(aChildForm.Handle, WM_NCACTIVATE, Ord(True), 0);
  aChildForm.SetBounds(0,0,200,200);
end;

aschne1 4. Feb 2005 19:45

Re: Einfluss BorderStyle auf Komponenten
 
Hallo

@Robert_G: Eigentlich benutze ich TFrame nicht gerne, da ich schlechte Erfahrungen damit gemacht habe. Ich denke ich bin mit meiner Meinung nicht allein? Wenn mich die Lösung von Jens nicht zufriedenstellt, dann werde ich noch einmal einen Versuch machen. Trotzdem Danke. :thumb:

@Jens: Danke für Deine Hilfe. Ich werd es einmal testen!

@Alcaeus: Schläfst Du nie oder habt Ihr im Südtirol einige Stunden Zeitverschiebung (5:50 Uhr)? :gruebel:

Ihr hört wieder von mir.

Danke + Gruss

aschne1 4. Feb 2005 20:42

Re: Einfluss BorderStyle auf Komponenten
 
Da bin ich wieder...

Delphi-Quellcode:
   SendMessage(ChildForm.Handle, WM_NCACTIVATE, Ord(True), 0);
Diese Zeile zu meinem bestehenden Code und das Ding läuft!

Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr.
Seite 1 von 2  1 2      

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