AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Repaint beim Form-Resize beschränken

Ein Thema von G-Baumstamm · begonnen am 25. Nov 2011 · letzter Beitrag vom 27. Nov 2011
Antwort Antwort
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#1

AW: Repaint beim Form-Resize beschränken

  Alt 27. Nov 2011, 11:13
wir arbeiten grundsätzlich mit Templates, deren überladene Konstruktoren deutlich umfangreicher als das folgende Beispiel sind (unter anderem wird ein Zeiger auf die Variable (kann nil sein) der zugewiesen wird, mit übergeben die im Destruktor wenn gesetzt "genilt" wird)
Delphi-Quellcode:
  Constructor Create(AOwner:TComponent;UseAutoScroll:Boolean=false);Overload;
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

{ TForm2 }

constructor TTemplate.Create(AOwner: TComponent; AParent: TwinControl;UseAutoScroll:Boolean=false);
begin
  inherited Create(AOwner);
  if Assigned(Aparent) then
      begin
        borderStyle := bsNone;
        Align := alClient;
        Parent := AParent;
        Show;
        AutoScroll := UseAutoScroll;
      end;
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
G-Baumstamm

Registriert seit: 9. Jan 2010
63 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Repaint beim Form-Resize beschränken

  Alt 27. Nov 2011, 11:49
Das Problem besteht ja bei mir nicht in der Tatsache, dass ich die Form nicht eingebunden bekomme, sondern darin das ich trotz bsNone die Scrollbars der Form brauche (Autoscroll wird bei bsNone ignoriert).
Daniel NR
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.359 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Repaint beim Form-Resize beschränken

  Alt 27. Nov 2011, 12:02
Mit embedded Forms würde es wohl funktionieren:
Delphi-Quellcode:
    FormXyz.ManualDock(TabSheetXyz, nil, alNone);
    FormXyz.Align := alClient;
    FormXyz.Show;

(Im Beispiel setze ich das Formular übrigens in ein TabSheet und da flackern die Controls auch beim Resizen - ebenso wie GroupBoxen.
Ich nutze hier embedded Forms aus Gründen der Übersichtlichkeit und Projektaufteilung.)


Embedded Forms in TabControls flackern widerum nicht. Allerdings muss man dann dynamisch beim umblättern das passende Form einblenden.
Das habe ich so getan:
Delphi-Quellcode:
procedure TFormPlan.odTabControlTournamentsPlanShowRegister(Sender: TObject);

  procedure ShowForm(F: TForm);

    procedure DoShowForm(SF, F: TForm; FC: TodFormCtrl);
    begin
      if SF = F then
      begin
        if (SF.Parent <> PanelTournamentsPlan) or (not SF.Visible) then
        begin
          SF.ManualDock(PanelTournamentsPlan, nil, alNone);
          SF.Align := alClient;
          SF.Show;
        end;
        FC.od := odTabControlTournamentsPlan.ActiveOd;
        if Assigned(SF.OnShow) then
          SF.OnShow(Self);
      end
      else
      begin
        FC.od := nil;
        SF.Close;
      end;
    end;

  begin
    CourtTournament := odTabControlTournamentsPlan.ActiveOd as TodTournament;
    DoShowForm(FormPlanMelee, F, FormPlanMelee.odFormCtrl);
    DoShowForm(FormPlanSwiss, F, FormPlanSwiss.odFormCtrl);
    DoShowForm(FormPlanGroup, F, FormPlanGroup.odFormCtrl);
    DoShowForm(FormPlanKo, F, FormPlanKo.odFormCtrl);
  end;

begin
  if odTournament = nil then
    ComboBoxTournamentSystem.ItemIndex := -1
  else if odTournament.Data_Is_Melee then
    ComboBoxTournamentSystem.ItemIndex := 0
  else if odTournament.Data_Is_Swiss then
    ComboBoxTournamentSystem.ItemIndex := 1
  else if odTournament.Data_Is_Group then
    ComboBoxTournamentSystem.ItemIndex := 2
  else if odTournament.Data_Is_Ko then
    ComboBoxTournamentSystem.ItemIndex := 3
  else
    ComboBoxTournamentSystem.ItemIndex := -1;
  case ComboBoxTournamentSystem.ItemIndex of
    0:
      ShowForm(FormPlanMelee);
    1:
      ShowForm(FormPlanSwiss);
    2:
      ShowForm(FormPlanGroup);
    3:
      ShowForm(FormPlanKo);
  else
    ShowForm(nil);
  end;
  ComboBoxTournamentSystem.Enabled := ComboBoxTournamentSystem.Text = '';
end;
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli (27. Nov 2011 um 12:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Repaint beim Form-Resize beschränken

  Alt 27. Nov 2011, 12:30
sondern darin das ich trotz bsNone die Scrollbars der Form brauche (Autoscroll wird bei bsNone ignoriert). ich habe leider kein D7 zu Testen zur Hand, der Code den ich eingestellt habe funktioniert unter unter D2010 + problemlos ....
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
G-Baumstamm

Registriert seit: 9. Jan 2010
63 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Repaint beim Form-Resize beschränken

  Alt 27. Nov 2011, 12:38
Vielleicht hab ich das auch einfach nur falsch umgesetzt, aber auch wenn ich die Form nach der beschriebenen Methode andocke bleibt das Problem, das die Form bei bsNone keine Scrollbars erzeugt bestehen ...

Edit: Menschliches Versagen beim Umsetzen von Bummis Code, funktioniert natürlich. Aber: Das Ding macht mich trotzdem fertig ... Wenn ich das genau so mache skinnt er die Scrollbars einfach nicht mit, ändere ich zum testen bsNone zu bsSizeable habe ich stattdessen ne Form mit Header ABER dafür mit geskinnten Scrollbars ...
Daniel NR

Geändert von G-Baumstamm (27. Nov 2011 um 12:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Repaint beim Form-Resize beschränken

  Alt 27. Nov 2011, 12:42
wenn Du den Code aus #22 erfolglos getestet hast muss ich Dich auf Montag vertrösten, im Büro habe ich noch ein paar VM's mit D7 ....
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.359 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Repaint beim Form-Resize beschränken

  Alt 27. Nov 2011, 12:52
Kann natürlich auch sein, dass die AlphaControls (vielleicht auch nur in Verbindung mit D7) da nicht korrekt mitspielen. Ist ja auch ein seltener Sonderfall, solch eine Anwendung.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
G-Baumstamm

Registriert seit: 9. Jan 2010
63 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: Repaint beim Form-Resize beschränken

  Alt 27. Nov 2011, 13:06
Mhh ... was mir jetzt noch einfallen würde, wäre

1) Über CreateParams (Style) zu sagen, das auch bei bsNone Scrollbars gezeichnet werden sollen, oder

2) Den Header durch irgendeinen Trick trotz bsSizeable nicht anzeigen

3) Entweder mit den Windows-Scrollbars leben, mit dem Formheader in der anderen Form oder geskinnte Scrollbars drüberzeichnen und das Verhalten imitieren.

Wobei ich natürlich glücklicher wäre wenn 1 oder 2 irgendwie machbar sind ... ^^

Edit: Wüsste nicht wie mir LockWindowUpdate helfen sollte, wenn meine Form entweder die falschen oder gakeine Scrollbars malt ...
Daniel NR
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:08 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