![]() |
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 |
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 |
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 |
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 |
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 |
Re: Einfluss BorderStyle auf Komponenten
Moin Armin,
Als kleiner Dennkanstoss: Rate mal wofür es ![]() Auf die Art kannst du visuell ein ContainerControl mit Untercontrols basteln und wie bei Forms auch -> voneinander ableiten! :) |
Re: Einfluss BorderStyle auf Komponenten
Zitat:
Greetz alcaeus |
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:
Hier kommt der das Aufruf des Formulars als Child
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.
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; |
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 |
Re: Einfluss BorderStyle auf Komponenten
Da bin ich wieder...
Delphi-Quellcode:
Diese Zeile zu meinem bestehenden Code und das Ding läuft!
SendMessage(ChildForm.Handle, WM_NCACTIVATE, Ord(True), 0);
Danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:49 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