Seite 1 von 1
Xclass dsdialog-maximieren- und Minimieren-Button ausblenden
Verfasst: Di, 04. Dez 2007 9:13
von stevie
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?
Verfasst: Di, 04. Dez 2007 9:16
von brandelh
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 ?
Verfasst: Di, 04. Dez 2007 9:35
von stevie
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.
Verfasst: Di, 04. Dez 2007 10:58
von stevie
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?
Verfasst: Di, 04. Dez 2007 11:08
von Martin Altmann
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
Verfasst: Di, 04. Dez 2007 11:08
von Lewi
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
Verfasst: Di, 04. Dez 2007 11:47
von stevie
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
Verfasst: Di, 04. Dez 2007 14:12
von brandelh
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()
Verfasst: Di, 04. Dez 2007 14:35
von stevie
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
Verfasst: Di, 04. Dez 2007 14:44
von brandelh
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
Verfasst: Di, 04. Dez 2007 15:26
von stevie
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
Verfasst: Di, 04. Dez 2007 17:46
von AUGE_OHR
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