AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi XE7: Frame soll Aktion im Hauptformular auslösen
Thema durchsuchen
Ansicht
Themen-Optionen

XE7: Frame soll Aktion im Hauptformular auslösen

Ein Thema von Kralle · begonnen am 16. Mai 2015 · letzter Beitrag vom 16. Mai 2015
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#11

AW: XE7: Frame soll Aktion im Hauptformular auslösen

  Alt 16. Mai 2015, 18:34
OK, also kann es doch ein "neueres" Feature sein und es muß nix in unserem XE komisch sein.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Kralle

Registriert seit: 31. Okt 2004
Ort: Bremerhaven
349 Beiträge
 
Delphi XE7 Professional
 
#12

AW: XE7: Frame soll Aktion im Hauptformular auslösen

  Alt 16. Mai 2015, 19:40
Hallo Sir Rufo,

Du schreibst das Du die Frames selber "dumm" lässt, aber ist es nicht gerade der Vorteil, das man möglichst viel in den jeweiligen Frames erledigt und nur
das nötigste in der Hauptunit erledigt.
Okay, in meinem Fall gibt es jetzt dadurch ein paar Probleme ...

Gruß Heiko
OS: Linux Mint 20 Cinnamon (64-Bit), Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC), Lazarus 2.1 (Freepascal 3.3.1),
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#13

AW: XE7: Frame soll Aktion im Hauptformular auslösen

  Alt 16. Mai 2015, 20:02
Nein ich lasse die Frames nicht dumm, aber dieser Frame war nicht der Kandidat für mehr Intelligenz.

Du möchtest mehr Intelligenz im Frame, na denn:
Delphi-Quellcode:
unit Form.Main;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.StdCtrls, Frame.Sub;

type
  TMainForm = class( TForm )
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Memo1: TMemo;
    TabSheet2: TTabSheet;
    SubFrame1: TSubFrame;
  private
  protected
    procedure DoShow; override;
  public

  end;

var
  MainForm: TMainForm;

implementation

{$R *.dfm}

procedure TMainForm.DoShow;
begin
  inherited;
  SubFrame1.Control := Memo1;
end;

end.
und der Frame:
Delphi-Quellcode:
unit Frame.Sub;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
  Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TSubFrame = class( TFrame )
    CheckBox1: TCheckBox;
    procedure CheckBox1Click( Sender: TObject );
  private
    FControl: TControl;
    procedure SetControl( const Value: TControl );
  protected
    procedure Notification( AComponent: TComponent; Operation: TOperation ); override;
  public
    property Control: TControl read FControl write SetControl;
  end;

implementation

{$R *.dfm}
{ TSubFrame }

procedure TSubFrame.CheckBox1Click( Sender: TObject );
begin
  FControl.Enabled := CheckBox1.Checked;
end;

procedure TSubFrame.Notification( AComponent: TComponent; Operation: TOperation );
begin
  inherited;
  if ( Operation = opRemove ) and ( AComponent = FControl ) then
    SetControl( nil );
end;

procedure TSubFrame.SetControl( const Value: TControl );
begin
  if Assigned( FControl ) then
    FControl.RemoveFreeNotification( Self );

  FControl := Value;

  if Assigned( FControl ) then
  begin
    FControl.FreeNotification( Self );
    CheckBox1.Checked := FControl.Enabled;
  end;

  CheckBox1.Enabled := Assigned( FControl );

end;

end.
Ach ja, macht im Übrigen immer noch das Gleiche allerdings mit einer Spezialisierung (Frame für Controls um die Enabled Eigenschaft zu bearbeiten)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Kralle

Registriert seit: 31. Okt 2004
Ort: Bremerhaven
349 Beiträge
 
Delphi XE7 Professional
 
#14

AW: XE7: Frame soll Aktion im Hauptformular auslösen

  Alt 16. Mai 2015, 20:38
Hallo Sir Rufo,

Also auf diesem Weg habei ch jetzt auch hin bekommen.

Kinder, Kinder, ihr müsst auch mehr OOP denken
Danke.

Gruß Heiko
OS: Linux Mint 20 Cinnamon (64-Bit), Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC), Lazarus 2.1 (Freepascal 3.3.1),
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 23:37 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