Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier

Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

Xclass dsdialog-maximieren- und Minimieren-Button ausblenden

Moderator: Moderatoren

Antworten
stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Xclass dsdialog-maximieren- und Minimieren-Button ausblenden

Beitrag von stevie » Di, 04. Dez 2007 9:13

Kann man beim dsdialog die Buttons für Maximieren und Minimieren ausblenden lassen? Unter Xbase kann man ja einfach mit :min- oder :maxbutton:=.F. die Buttons ausblenden. Geht das beim dsdialog überhaupt und ja wie?

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14181
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Beitrag von brandelh » Di, 04. Dez 2007 9:16

Hi,

ist XClass nicht eine Erweiterung der XbpXXXX Klasse ?

Wenn ja, dann müsste es genauso gehen.
Du denkst dran, dass man diese Einstellung vor Create() vornehmen muss bzw. danach dann noch ein configure() nötig ist ?
Gruß
Hubert

stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Beitrag von stevie » Di, 04. Dez 2007 9:35

brandelh hat geschrieben:Hi,

ist XClass nicht eine Erweiterung der XbpXXXX Klasse ?

Wenn ja, dann müsste es genauso gehen.
Du denkst dran, dass man diese Einstellung vor Create() vornehmen muss bzw. danach dann noch ein configure() nötig ist ?
In dem Fall nicht. Der dsdialog ist eine komplette Neuentwicklung, welche nur wenige Eigenschaften des alten xbpdialoges enthält.

stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Beitrag von stevie » Di, 04. Dez 2007 10:58

stevie hat geschrieben:
brandelh hat geschrieben:Hi,

ist XClass nicht eine Erweiterung der XbpXXXX Klasse ?

Wenn ja, dann müsste es genauso gehen.
Du denkst dran, dass man diese Einstellung vor Create() vornehmen muss bzw. danach dann noch ein configure() nötig ist ?
In dem Fall nicht. Der dsdialog ist eine komplette Neuentwicklung, welche nur wenige Eigenschaften des alten xbpdialoges enthält.
Wenn man min und maxbutton nach dem create aufruft und dann configure laufen lässt, gehts. Gibt es eigentlich ne Möglichkeit, die Größenänderung komplett zu verbieten?

Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 14031
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Martin Altmann » Di, 04. Dez 2007 11:08

Hallo Stevie,
schau Dir mal die Rahmentypen (:border) an. Da gibt es einen, mit dem man die Größenänderung bei einem Fenster verbieten kann.
z.B.:
XBPDLG_DLGBORDER
XBPDLG_RAISEDBORDERTHICK_FIXED
XBPDLG_RECESSEDBORDERTHICK_FIXED

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
stellv. Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.

Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 784
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg

Beitrag von Lewi » Di, 04. Dez 2007 11:08

Hallo Stevie,
die dsDialog-Klasse hat "dsBaseDialog" als Superklasse. DsBaseDialog selbst ist unter anderem von xbpDialog abgeleitet. Insofern kannst Du die Slots für ::MinButton und ::MaxButton setzen.

Gruß, Olaf

stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Beitrag von stevie » Di, 04. Dez 2007 11:47

Lewi hat geschrieben:Hallo Stevie,
die dsDialog-Klasse hat "dsBaseDialog" als Superklasse. DsBaseDialog selbst ist unter anderem von xbpDialog abgeleitet. Insofern kannst Du die Slots für ::MinButton und ::MaxButton setzen.

Gruß, Olaf
Um die Minimieren und Maximieren-Buttons zu entfernen und die Größe zu fixieren , musste ich das jetz so machen:
oDlg:border:=XBPDLG_RAISEDBORDERTHICK_FIXED
oDlg:Create()
oDlg:minbutton:=.F.
oDlg:maxbutton:=.F.
oDlg:configure(GetApp():DrawingArea, , {40,70}, getapp():drawingArea:currentsize())

danke für die Antworten

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14181
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Beitrag von brandelh » Di, 04. Dez 2007 14:12

eigentlich sollte das so reichen, kann es sein, dass du in der Create-Methode die Buttons auf .t. setzt ?

Code: Alles auswählen

oDlg:border:=XBPDLG_RAISEDBORDERTHICK_FIXED
oDlg:minbutton:=.F.
oDlg:maxbutton:=.F.
oDlg:Create()
Gruß
Hubert

stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Beitrag von stevie » Di, 04. Dez 2007 14:35

brandelh hat geschrieben:eigentlich sollte das so reichen, kann es sein, dass du in der Create-Methode die Buttons auf .t. setzt ?

Code: Alles auswählen

oDlg:border:=XBPDLG_RAISEDBORDERTHICK_FIXED
oDlg:minbutton:=.F.
oDlg:maxbutton:=.F.
oDlg:Create()
nein, ich habe nur obiges stehen, wenn ich das so wie bei dir angebe, wird zwar die memvar zugewiesen, aber erst durch configure dann benutzt

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14181
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Beitrag von brandelh » Di, 04. Dez 2007 14:44

Hi,

ich sage ja eigentlich müsste Create() das erledigen.
Wenn es bei XClass anders ist, müssen in Create() (einer der abgeleiteten Klassen) die Instanzvariablen wieder anders gesetzt werden.

Hauptsache es geht jetzt ;-)
Gruß
Hubert

stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Beitrag von stevie » Di, 04. Dez 2007 15:26

brandelh hat geschrieben:Hi,

ich sage ja eigentlich müsste Create() das erledigen.
Wenn es bei XClass anders ist, müssen in Create() (einer der abgeleiteten Klassen) die Instanzvariablen wieder anders gesetzt werden.

Hauptsache es geht jetzt ;-)
genau meine Meinung
Ich sehe, wir verstehn uns :lol:

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11051
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Beitrag von AUGE_OHR » Di, 04. Dez 2007 17:46

hi,

eigendlich ist euer Problem ja gelöst. Hier noch eine Lösung über API
von Phil die man auch für andere Zwecke einsetzten kann:

Code: Alles auswählen

/*****************************
* Source : WindowFuncs.prg
* System : <unkown>
* Author : Phil Ide
* Created: 10/09/2003
*
* Purpose:
* ----------------------------
* History:
* ----------------------------
*    10/09/2003 14:17 PPI - Created
*****************************/

#include "Common.ch"
#include "dll.ch"
#include "winuser.ch"

/* Toggle window properties
   Example:

   A. To turn off (disable) the Maximise button:

       SetWindowPropertyOff( oDlg, WS_MAXIMIZEBOX )

   B. To turn off (disable) the Minimise button:

       SetWindowPropertyOff( oDlg, WS_MINIMIZEBOX )

   C. To turn off the max and min buttons:

       SetWindowPropertyOff( oDlg, WS_MAXIMIZEBOX+WS_MINIMIZEBOX )

   Notes:
   Sample A only disables the maximise button.
   Sample B only disables the minimise button.
   Sample C actually removes the minimise and maximise buttons.

   The inference here is that one cannot exist without the other.

*/

Function SetWindowPropertyOff( oWin, nProperties, lOnOff )
   local nPtr
   local i

   DEFAULT lOnOff to FALSE // toggle=off

   nPtr := GetWindowLongA( oWin:getHWnd(), GWL_STYLE )
   for i := 1 to 32
      if nProperties[i]
         nPtr[i] := lOnOff
      endif
   next
   SetWindowLongA( oWin:getHWnd(), GWL_STYLE, nPtr )
   return Nil

DLLFUNCTION GetWindowLongA( nHwnd, nStyle ) USING STDCALL FROM User32.dll
DLLFUNCTION SetWindowLongA( nHwnd, nStyle, nPtr ) USING STDCALL FROM User32.dll

#ifndef __WINUSER_
#define __WINUSER_
   /*
    * Window field offsets for GetWindowLong()
    */
   #define GWL_WNDPROC         (-4)
   #define GWL_HINSTANCE       (-6)
   #define GWL_HWNDPARENT      (-8)
   #define GWL_STYLE           (-16)
   #define GWL_EXSTYLE         (-20)
   #define GWL_USERDATA        (-21)
   #define GWL_ID              (-12)

   /*
    * Window Styles
    */
   #define WS_OVERLAPPED       0x00000000
   #define WS_POPUP            0x80000000
   #define WS_CHILD            0x40000000
   #define WS_MINIMIZE         0x20000000
   #define WS_VISIBLE          0x10000000
   #define WS_DISABLED         0x08000000
   #define WS_CLIPSIBLINGS     0x04000000
   #define WS_CLIPCHILDREN     0x02000000
   #define WS_MAXIMIZE         0x01000000
   #define WS_CAPTION          0x00C00000     /* WS_BORDER | WS_DLGFRAME  */
   #define WS_BORDER           0x00800000
   #define WS_DLGFRAME         0x00400000
   #define WS_VSCROLL          0x00200000
   #define WS_HSCROLL          0x00100000
   #define WS_SYSMENU          0x00080000
   #define WS_THICKFRAME       0x00040000
   #define WS_GROUP            0x00020000
   #define WS_TABSTOP          0x00010000

   #define WS_MINIMIZEBOX      0x00020000
   #define WS_MAXIMIZEBOX      0x00010000

#endif
gruss by OHR
Jimmy

Antworten