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 Größe von TWinControl-Komponenten beschränkt? (https://www.delphipraxis.net/22219-groesse-von-twincontrol-komponenten-beschraenkt.html)

Zottel 14. Mai 2004 10:28


Größe von TWinControl-Komponenten beschränkt?
 
HalliHallo

Ich weiss nicht mehr weiter. Vielleich könnt ihr mir ja helfen.
Es ist eine Herrausforderung an 2 Stellen in meinen Programmen aufgetreten:
In einem Planer für die Terminierung von Mitarbeitern ist in der Übersicht ein TADVStringGrid von TMS mit einer höhe von 1320 eingebaut.
Das ganze ist in einer ScrollBox. Aber einer bestimmten Höhe (scheint screen.height zu sein), wird das Grid nicht mehr neu gezeichnet. es ist einfach ein weißes Feld zu sehen. Der fehler tritt auch bei einem anderen grid auf.
Auf die Screen.height bin ich gekommen, weil bei mir der fehler bei einer auflösung von 1600*1200 nicht auftritt, während er bei einer 1280*1024 auflösung doch schon störend ist.
Das gleiche Problem tritt an einer anderen Stelle auf:
Wenn ich ein Panel länger machen will, als die bildschirmbreite, lässt es sich nicht weiter aufziehen.
Setzen kann ich das panel auf eine breite , die größer ist, als die bildschirmbreite. wenn ich dann aber versuche, das Panel per Mausclick@Runtime weiter aufzuziehen, schnuppert es zurück, oder geht nicht weiter..... :gruebel:

das ist die routine, die ich in MouseDown des Panels eingebunden habe:

Delphi-Quellcode:
procedure TForm1.MasterPanelMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
Var SicherungTop:Integer;
begin
  SicherungTop:=(Sender as TADVPanel).top;
  ReleaseCapture;
  (Sender as TADVPanel).Cursor:=crSizeWE;
  //TWinControl(Sender).Perform(WM_SysCommand,$F012,0); //verschieben
  //TWinControl(Sender).Perform(WM_SysCommand,$F001,0); //linke seite verändern
  TWinControl(Sender).Perform(WM_SysCommand,$F002,0); //rechte verändern
  //TWinControl(Sender).Perform(WM_SysCommand,$F003,0); //obere seite verändern
  //TWinControl(Sender).Perform(WM_SysCommand,$F004,0); //links oben verändern
  //TWinControl(Sender).Perform(WM_SysCommand,$F005,0); //rechts oben verändern
  //TWinControl(Sender).Perform(WM_SysCommand,$F006,0); //untere seite verändern
  //TWinControl(Sender).Perform(WM_SysCommand,$F007,0); //links unten verändern
  //TWinControl(Sender).Perform(WM_SysCommand,$F008,0); //rechts unten verändern
  (Sender as TADVPanel).Cursor:=crDefault;
end;
Wie kann ich die beschränkung aufheben? Größere Flachbildschirme für höhere Auflösungen sind abgelehnt worden :wink:
wie gesagt, ich weiss nicht mehr weiter....

danke schonmal im vorraus

[edit=sakura] [delphi]tags Mfg, sakura[/edit]

SirThornberry 14. Mai 2004 12:01

Re: Größe von TWinControl-Komponenten beschränkt?
 
Also, ich hab grad mal eine Scrollbox genommen, darein ein Panel gepackt, und im Create des Forms hab ich Panel.width auf 5000 gesetzt, Das Programm hab ich dann auf Vollbild gestretcht und die scrollbar in der scrollbox ist ungefähr ein 5tel der Sichtbaren fläche bei 1024... also scheints bei mir zu funktionieren.... Oder ich hab dein Problem missverstanden

Warum arbeitest du eigentlich mit Perform? Vielleicht liegt es ja daran weil bei dem eigentlichen Perform wenn man das mit der Maus macht das auch nicht größer geht weil die maus ja dann am bildschirmrand anschlägt

Zottel 14. Mai 2004 12:21

Re: Größe von TWinControl-Komponenten beschränkt?
 
Hmmm... dann scheint das bei dir hinzuhauen. Das grid wird ab einer bestimmten höhe einfach nicht mehr neu gezeichnet.....
bei mir scheint das auch hinzuhauen, aber bei den Teamleiter-Rechnern nicht.... misteriös...... ok. danke dir jedenfalls für ausprobieren. Liegt dann vielleicht am grafikkartentreiber....... ich muss nochmal ein paar versuche starten......

zu dem Perform:
Wenn du eine bessere Lösung hättest, wäre ich echt dankbar.
Denn das war das einzige, was ich gefunden hatte, womit man den Benutzer die größe einer Komponente ändern lassen kann, so wie er will.
Aber du hast schon recht. Bei der mausführung würde er an den rand stossen.....

Ddanke erstmal ;-)

SirThornberry 14. Mai 2004 13:06

Re: Größe von TWinControl-Komponenten beschränkt?
 
einfach
Delphi-Quellcode:
TWinControl(Sender).Width := 5000;
Ich glaub ich hab dich falsch verstanden, denn die lösung wäre zu simpel und mit top machst dus ja bereits so

Zottel 14. Mai 2004 13:28

Re: Größe von TWinControl-Komponenten beschränkt?
 
Ok. hat sich erledigt. hab ne routine gefunden, mit der man die groesse auch noch bessern ändern kann.
jezze ist nur noch das prob mit dem Grid... aber da werd ich auch noch ne möglichkeit finden ... :gruebel:


Vielen dank jedenfalls :-D

Zottel 14. Mai 2004 17:52

Re: Größe von TWinControl-Komponenten beschränkt?
 
Hmpf... das Grid und die Komponenten werden scheinbar nur bis zur Desktop-größe gepainted.
Es liegt also nicht an Treibern oder so.
Wenn ich das Grid die auflösung überschreitet, wird es nicht mehr gezeichnet.
Weiss einer zufällig, wie man das umgehen kann? Oder die größe des Bereiches ändern kann?

vielen dank schonmal

mschaefer 14. Mai 2004 21:46

Re: Größe von TWinControl-Komponenten beschränkt?
 
Moin moin Zottel

also normalerweise kann man mit Invalidate ein Zeichnen neu auslösen. Da du ber was mit StringGrid macht fällt mir dazu folgendes ein: Die sint aus einzelnen StrinListen zusammengebaut und das ist von der Speicherauslastung eher gruselig programmiert. Wenn man große Grid´s hat müßte man eingentlich mit Hash-Tables arbeiten. Als Fehlerquelle würde ich daher nach einer etwas an der Taktrenze arbeitenden Speichrbank oder einen lausigen Bildschirmtreiber ansehen. Probier Dein Programm mal auf mehren Rechnern aus. An ein reines Programmierproblem glaube ich da nicht.

Grüße // Martin

Muetze1 14. Mai 2004 21:50

Re: Größe von TWinControl-Komponenten beschränkt?
 
Moin!

Zitat:

Zitat von mschaefer
also normalerweise kann man mit Invalidate ein Zeichnen neu auslösen.

Nicht direkt. Invalidate markiert den Bereich des Controls nur als "dreckig", so dass dieses beim nächsten Paint im Update-Bereich des Paints liegt. Das Paint selber wird erst mit einem UpdateWindow(Handle) ausgelöst, Invalidate merkt das nur vor.

MfG
Muetze1

mschaefer 14. Mai 2004 21:59

Re: Größe von TWinControl-Komponenten beschränkt?
 
Hi Muetze1,

Excelente Beschreibung, so isses !

Danke // Martin

Zottel 14. Mai 2004 22:32

Re: Größe von TWinControl-Komponenten beschränkt?
 
Haut aber scheinbar doch nicht hin.
Das Grid scheint ab da nicht mehr zu existieren. Ich werd einfach das Grid runterschmeissen und aufm Canvas malen.....
Das es ja scheinbar nochnichtmal hinhaut, Labels so zu Createn, das sie sich bei einem Grid mit Scrollbars beim scrollen mitbewegen, bleibt mir nix anderes übrig.... :cry:

Danke jedenfalls.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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