AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung super-buggy MultiView-Komponente - Tipps? Workarounds?
Thema durchsuchen
Ansicht
Themen-Optionen

super-buggy MultiView-Komponente - Tipps? Workarounds?

Ein Thema von knaeuel · begonnen am 27. Sep 2018 · letzter Beitrag vom 11. Okt 2018
 
Rollo62

Registriert seit: 15. Mär 2007
4.174 Beiträge
 
Delphi 12 Athens
 
#10

AW: super-buggy MultiView-Komponente - Tipps? Workarounds?

  Alt 11. Okt 2018, 05:17
FindStyleResource am Besten innerhalb von OnApplyStyleLookup oder OnUpdateObjcts benutzen,
in deinem Fall wird es aber schwierig, weil anscheinend gar keine Styled Controls benutzt werden.
Du könntest versuchen statt TLayout TPanel als Basiscontrol zu benutzen, das hat nämlich diese Events.

Ich würde auch versuchen nur ein Panel, statt Left/Right, zu verwenden.
Das sollte im aktuellen Design noch gut möglich sein, wenn man z.B. eine Eigenschaft definiert "FromLeft" die alle relevanten Komponenten, und die Richtung umkehrt
(also z.B. Align von MostRight zu MostLeft.
Es würde ressourcen sparen, und man müsste man sich nur noch um ein Panel kümmern.

Was ich gerne benutze ist dem Frame noch ein Interface zu geben, um es besser zu kapseln und zu modularisieren
Delphi-Quellcode:
type
  IMultiViewUserFrame = interface
  ['{FFE7532C-C203-412C-B658-10F720AADB05}']
      function GetFromLeft : Boolean;
      procedure SetFromLeft(const AValue : Boolean);

      property FromLeft : Boolean read GetFromLeft write SetFromLeft;
  end;


type
  TMultiViewUserFrame = class(TFrame, IMultiViewUserFrame)
  ...
Damit kann man dann beim Aufruf ein Interface benutzen, und dann dein gewünschtes Verhalten steuern.
Das macht aber beim aktuellen TFrameStand nicht so viel Sinn, weil ja auch immer die Klassen verfügbar sind, aber ich wollte immer mal versuchen den FrameStand etwas umzubauen, so das interfaces statt Klassen benutzt werden können.
Das würde den ganzen Aufbau etwas besser entkoppeln, und modularer und besser testbar machen.
Denn ich habe immer die Befürchtung das in größeren Projekten dieser Framestand mal schnell zu komplex werden kann (auf mobilen Plattformen).

Delphi-Quellcode:
procedure TForm1.ButtonShowLeftSideClick(Sender: TObject);
var flani:TFloatAnimation;
  LFrameIntf: IMultiViewUserFrame;
begin
  //Frame im Stand aufrufen:
  LFrameInfoLeft := FrameStand1.New<TMultiViewUserFrame>(LayoutForMVFrameLeft, 'LikeMultiViewLeft');

  LFrameIntf := LFrameInfoLeft.Frame; // Hier könnte das interface benutzt werden
  LFrameIntf.FromLeft := True;


  LFrameInfoLeft.Show;
  //Buttons en/disable
  ButtonShowLeftSide.Enabled:=false;
  ButtonSlideOutLeft.Enabled:=true;
end;
Rollo
  Mit Zitat antworten Zitat
 


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 07:05 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