fbpx
Welcome, Guest
Username: Password: Remember me
Hier wird Deutsch gesprochen

TOPIC: VO Tools für X#

VO Tools für X# 1 week 1 day ago #12535

  lagraf's Avatar Topic Author lagraf Offline Posts: 62
In meinen komplexeren Vo Apps verwende ich einige Tools/Dlls. Kann mir jemand einen Überblick geben, wie es damit nun in X# aussieht:
- bBrowser 1.4 wegen einem CompoundField in einem Browser
- FabPaint und FabSplitShell
- RP2.17
- Hoover Buttons

Und eine Frage zur Installation einer App mittels InnoSetup:
Kann man mit InnoSetup irgendwie erkennen, ob die benötigte .NET Version installiert ist und falls nicht, diese installieren?

LG Franz

Please Log in or Create an account to join the conversation.

VO Tools für X# 1 week 1 day ago #12537

  wriedmann's Avatar wriedmann Offline Posts: 1995
Hallo Franz,
- der bBrowser ist als Update verfügbar: www.bbrowser.net/
- die Fab-Tools sollten sich migrieren lassen, wenn Fabrice nicht schon was gemacht hat, schau auf seiner Seite nach und sonst frag einfach nach
- ReportPro ist migriert, und ist beim Entwicklungsteam erhältlich. Selber migrieren würde ich ausschließen
- die Hoover Buttons kenne ich nicht, sollten sich aber migrieren lassen. Sind die frei verfügbar?

Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy

www.riedmann.it - docs.xsharp.it

Please Log in or Create an account to join the conversation.

VO Tools für X# 1 week 1 day ago #12541

  Karl-Heinz's Avatar Karl-Heinz Offline Posts: 456
Hallo Franz, Wolfgang

Auf Frans Wauters web site https://vo.wautersit.com/pubcavo gibt´s neben vielen anderen "alten" Sachen ein hoverbutton.zip.

Der Stand der Hover Buttons ist allerdings 2002 und das Problem ist, dass die Buttons offensichtlich immer im Win2k look gezeichnet werden. Ist die App themed erscheinen die Buttons also weiterhin im Win2K look. Franz: Gibt es da etwas aktuelleres, wo themes evtl. berücksichtigt sind ? Habe das aef versucht zu kompilieren, aber eine Menge warnings erhalten. Kannst Du Dein "bereinigtes" Hoverbutton.aef mal hochladen ?

Gruß
Karl-Heinz

Please Log in or Create an account to join the conversation.

VO Tools für X# 1 week 1 day ago #12543

  Fabrice's Avatar Fabrice Offline Posts: 65
Hi Franz,

FabSplitShell has been migrated, FabPaint is almost done, and more are underway ( FabOutlookBar, ....)
Currently, I'm porting theses libraries in a "private" FabTools repository, and will turn it to public asap....But if you need it now, I can make it public now, and just indicate in the ReadMe what library has been fully done.

Just tell me....
Regards
Fab

Please Log in or Create an account to join the conversation.

VO Tools für X# 1 week 1 day ago #12545

  lagraf's Avatar Topic Author lagraf Offline Posts: 62
Hallo Wolfgang, hallo Karl-Heinz,
die HooverButtons sind frei verfügbar, meine Version in VO ist allerdings auch vom Dez. 2002, müßte also das gleiche sein. Eine andere Version ist mir nicht bekannt.

Beim bBrowser verwende ich die Version 1.4, da ich ihn nur an einer einzigen Stelle für ein Compound Field benötige. Die kostenpflichtige Version für X# werde ich wohl nur einsetzen, wenn VO nicht mehr auf Win10 läuft und ich dem Kunden dies verrechnen kann.

LG Franz

Please Log in or Create an account to join the conversation.

Last edit: by lagraf.

VO Tools für X# 1 week 1 day ago #12546

  lagraf's Avatar Topic Author lagraf Offline Posts: 62
Hi Fabrice,
I only use FabSplitShell and FabPaint and I don't need it urgently, but can you please inform me, when both are available for X#?
I slowly transport my VO apps to X# to be prepared if VO does not run any more on Win10. Till this day all my customers work with VO apps.
Regards, Franz

Please Log in or Create an account to join the conversation.

VO Tools für X# 1 week 1 day ago #12547

  wriedmann's Avatar wriedmann Offline Posts: 1995
Hallo Franz,
verwendest Du die unveränderte Version oder hast Du sie angepasst?
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy

www.riedmann.it - docs.xsharp.it

Please Log in or Create an account to join the conversation.

VO Tools für X# 1 week 1 day ago #12551

  wriedmann's Avatar wriedmann Offline Posts: 1995
Hallo Franz,

ich habe mir die Hoverbutton-Klasse angeschaut und nach Fixen aller Warnings/Fehler eine Migration probiert.
Der Autor habe dummerweise zwei Klassen erweitert - und das ist unter .NET nicht mehr zulässig.
Verwendest Du diese Hoverbuttons nur auf Dialog-Fenstern oder auch auf DataWindows?
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy

www.riedmann.it - docs.xsharp.it

Please Log in or Create an account to join the conversation.

VO Tools für X# 1 week 1 day ago #12553

  Karl-Heinz's Avatar Karl-Heinz Offline Posts: 456
Hallo Wolfgang,

Das meiste im "CLASS HoverWindow (Window)" braucht man nicht mehr, da VO zwischenzeitlich von selbst die ownerdraw Nachrichten an die controls sendet.

- METHOD Dispatch( oEvent ) CLASS __FormDialogWIndow
- METHOD OwnerDraw() CLASS Event
- und die Dispatcher der "HoverDialogWindow" und "HoverDiataDialogWindow" Klassen.


Zudem braucht es diese Methode nicht mehr:
METHOD OnDrawItem( lpDis ) CLASS HoverButton	
	//This methos is called in event object on WM_DRAWITEM message
	//I dont know why but when this method is strong typed, sometimes it is not seen at run-time
	RETURN SELF:__Draw(lpDis)

dafür diese Methode. Existiert eine ODDrawItem Methode schickt VO die Nachrichten dort hin.
METHOD ODDrawItem ( oEvent ) CLASS HoverButton // VO ownerdraw Callback method 
LOCAL lpDis AS _winDRAWITEMSTRUCT


	lpDis := PTR( _CAST , oEvent:lParam )  

	self:__Draw ( lpDis) 

	RETURN SELF

Kannst Du die

FUNCTION ColorToGrayScale(lpBI AS _WINBITMAPINFO, lpvBits AS BYTE PTR, lpBIGray AS _WINBITMAPINFO, lpGray AS BYTE PTR) AS VOID PASCAL

kompilieren ?

Gruß
Karl-Heinz

Please Log in or Create an account to join the conversation.

Last edit: by Karl-Heinz.

VO Tools für X# 1 week 1 day ago #12554

  wriedmann's Avatar wriedmann Offline Posts: 1995
Hallo Karl-Heinz,
die Funktion ColorToGrayScale() habe ich nicht kompilieren können, weil sich unter X# der Cast der Struktur nicht machen lässt.
Momentan habe ich diesen Teil auskommentiert, weil ich erst mal schauen wollte, ob das Ganze prinzipiell funktioniert - und das tut es.
Das mit der OODrawItem()-Methode wusste ich nicht - habe bisher um OwnerDraw außer in ListViews (solltest Du irgendwoher kennen....) einen großen Bogen gemacht.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy

www.riedmann.it - docs.xsharp.it

Please Log in or Create an account to join the conversation.

VO Tools für X# 1 week 1 day ago #12555

  wriedmann's Avatar wriedmann Offline Posts: 1995
Hallo Karl-Heinz,
diesen Code
rMask	:= dword(_cast, lpBI.bmiColors[1])
gMask	:= dword(_cast, lpBI.bmiColors[2])
bMask	:= dword(_cast, lpBI.bmiColors[3])
würde ich ganz einfach so schreiben:
rMask	:= lpBI.bmiColors.rgbBlue
gMask	:= lpBI.bmiColors.rgbGreen
bMask	:= lpBI.bmiColors.rgbRed
Red und Blue scheinen mir aber vertauscht zu sein.

Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy

www.riedmann.it - docs.xsharp.it

Please Log in or Create an account to join the conversation.

VO Tools für X# 1 week 1 day ago #12557

  wriedmann's Avatar wriedmann Offline Posts: 1995
Hallo Franz,

mit den Hinweisen von Karl-Heinz läuft das jetzt, siehe Anlage.

Wolfgang

File Attachment:

File Name: HoverButton.zip
File Size:18 KB
Wolfgang Riedmann
Meran, South Tyrol, Italy

www.riedmann.it - docs.xsharp.it
Attachments:

Please Log in or Create an account to join the conversation.

VO Tools für X# 1 week 1 day ago #12560

  Karl-Heinz's Avatar Karl-Heinz Offline Posts: 456
Hallo Wolfgang,

Franz kann das mit der ColorToGrayScale() ja mal teste. Ansonsten funktioniert das Zeichnen per ODDrawItem() einwandfrei. Aber wie schon erwähnt: Ist die App themed werden die Buttons halt nur im W2k look gezeichnet ... Wäre die App themed könnte man das ganze dann per Customdraw und dem CallBack

METHOD CustomDraw ( lParam ) CLASS HoverButton // VO Callback NM_CUSTOMDRAW Messages

machen - wenn sich denn einer das antun will :-)

Gruß
Karl-Heinz

Please Log in or Create an account to join the conversation.

VO Tools für X# 1 week 1 day ago #12561

  wriedmann's Avatar wriedmann Offline Posts: 1995
Hallo Karl-Heinz,

ich denke, spätestens mit den neuen WinForms-basierten GUI-Klassen wird das eh alles hinfällig.

Ich habe mich von ownerdraw weitgehend ferngehalten - da waren die unzähligen aus der Zeit gefallenen Delphi-Applikationen mit ihren Buttons eine Lehre....

Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy

www.riedmann.it - docs.xsharp.it

Please Log in or Create an account to join the conversation.

VO Tools für X# 1 week 3 hours ago #12571

  Karl-Heinz's Avatar Karl-Heinz Offline Posts: 456
Hallo Wolfgang,

1, Ich habe mir Deinen HoverButtonLib code angesehen und bemerkt, dass die OnDrawItem() weiterhin existiert. Diese Methode wird nicht mehr benötigt wenn der Code der ODDrawItem() von:
method ODDrawItem( oEvent as Event ) as int
	local lpDis		as _WINDRAWITEMSTRUCT
	local oControl	as object

	~"ONLYEARLY+"
	if oEvent:uMsg == WM_DRAWITEM
		lpDis	:=	ptr(_cast,oEvent:lParam)
		if lpDis.CtlType == ODT_BUTTON
			oControl	:=	GetObjectByHandle(lpDis.hwndItem)
			if oControl <> NULL_OBJECT  .and. IsInstanceOf(oControl, #HOVERBUTTON)// .and. IsMethod(oControl,#OnDrawItem)
				Send(oControl, #OnDrawItem, lpDis)
			endif
		endif
	endif
	~"ONLYEARLY-"
	return 0L

in:
METHOD ODDrawItem( oEvent AS Event ) AS VOID
	LOCAL lpDis		AS _WINDRAWITEMSTRUCT 

	lpDis := PTR(_CAST,oEvent:lParam)
	
	SELF:__Draw(lpDis)

	RETURN

geändert wird. Es ist nicht notwendig, dass in der ODDrawItem() das control geprüft, und erst über den Umweg OnDrawItem() dann SELF:__Draw(lpDis) aufgerufen wird. Da zudem ein ODDrawitem() Rückgabewert ignoriert wird macht ein INT als Rückgabe wenig Sinn. Dies ist der VO code ( dispatch.prg ) der ODDrawItem() aufruft:
FUNCTION __Dispatch_DrawItem(oEvent AS @@event, oWindow AS OBJECT) AS LONGINT PASCAL
    LOCAL struDrawItem AS _winDRAWITEMSTRUCT
    LOCAL oControl AS OBJECT
    
    struDrawItem := PTR(_CAST, oEvent:lParam)
    
    oControl := GetObjectByHandle(struDrawItem.hwnditem)
    IF oControl != NULL_OBJECT .AND. IsMethod(oControl, #ODDrawItem)
        Send(oControl, #ODDrawItem, oEvent)
        oWindow:EventReturnValue := 1L
        RETURN 1L
    ENDIF
    IF IsInstanceOf(oWindow, #Window)
        oWindow:Default(oEvent)
    ENDIF
    RETURN 0L

2. Um die psz warnings los zu werden habe ich zudem alle PSZ() in String2Psz() geändert

Gruß
Karl-Heinz

Please Log in or Create an account to join the conversation.

VO Tools für X# 5 days 14 hours ago #12581

  lagraf's Avatar Topic Author lagraf Offline Posts: 62
Hallo Wolfgang und Karl-Heinz,
danke für die Umstellung der HooverButton Lib! Ich werde demnächst zum ersten Programm kommen, wo ich die Buttons einsetze, dann probiere ich alles aus.

PS: Ich verwende die unveränderte Version und die Buttons auch auf DataWindows!

Please Log in or Create an account to join the conversation.

VO Tools für X# 5 days 14 hours ago #12582

  lagraf's Avatar Topic Author lagraf Offline Posts: 62
Noch ein paar Fragen zum ReportPro:
  • Wie hoch sind die Kosten dafür?
  • Welche Version wird für X# eingesetzt und wie wird die angefordert?
  • Für VO verwende ich 2.17, ersetzt die X# Version diese und geht auch für VO oder muß ich beide installiert lassen

Please Log in or Create an account to join the conversation.

VO Tools für X# 5 days 14 hours ago #12583

  wriedmann's Avatar wriedmann Offline Posts: 1995
Hallo Franz,
ich weiß nicht, wie Du den HoverButton einsetzt - aber wie der Karl-Heniz geschrieben hatte, verwendet der noch den alten Look mit Windows 2000 Charme, und nicht den moderneren Look seit XP bzw. neuer.
Vergleiche das mal:

Gerade beim Drüberfahren ändert sich der Look und die ganze Applikation schaut wesentlich moderner aus.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy

www.riedmann.it - docs.xsharp.it
Attachments:

Please Log in or Create an account to join the conversation.

VO Tools für X# 5 days 14 hours ago #12584

  Karl-Heinz's Avatar Karl-Heinz Offline Posts: 456
Jungs,

Mir ist noch aufgefallen, dass in der X# version nie ein Focus rectangle gezeichnet wird. Daher müsste im Constructor dieser seltsame cast ersetzt werden.
//SELF:lShowFocus		:= LOGIC(_CAST,_and(GetWindowLong(SELF:hWnd,GWL_STYLE), WS_TABSTOP))  // aktuelle stand 

SELF:lShowFocus		:= _and( GetWindowLong(SELF:hWnd,GWL_STYLE) , WS_TABSTOP ) == WS_TABSTOP  

Allerdings wäre es sinnvoller SELF:lShowFocus immer auf TRUE zu setzen. Warum der Autor das Zeichnen eines focus rectangle vom Style WS_TABSTOP abhängig macht ist nicht nachvollziehbar. Anhand dem Inhalt der Struktur weiss man immer wann ein focus rectangle gezeichnet werden muss und wann nicht. Wenn bei einem Button tatsächlich kein focus rectangle erwünscht ist, könnte man dies immer noch mit dem assign ShowFocus steuern.

In der __Draw() Methode sähe die Änderung so aus:
	lDrawFocusRectangle :=  _AND ( lpDis.itemState , ODS_FOCUS ) == ODS_FOCUS  .AND.  _AND ( lpDis.itemState , ODS_NOFOCUSRECT ) != ODS_NOFOCUSRECT  


//	IF SELF:lShowFocus  .and. GetFocus() == SELF:hWnd  // aktuelle stand

	
		// stattdessen
		
	IF lDrawFocusRectangle 

		// oder 

//	IF lDrawFocusRectangle .and. SELF:lShowFocus 
	
		SetTextColor(lpDis.hDC, 0x00000000)
		SetBkColor(lpDis.hDC, 0x00FFFFFF)		
		InflateRect(@lpDis.rcItem,-3,-3)
		DrawFocusRect(lpDis.hDC,@lpDis.rcItem)
			
	ENDIF
			
//	ENDIF 

Gruß
Karl-Heinz

Please Log in or Create an account to join the conversation.

VO Tools für X# 5 days 14 hours ago #12585

  wriedmann's Avatar wriedmann Offline Posts: 1995
Hallo Franz,

was ReportPro betrifft: ich bin mir nicht sicher, ob es da eine FoX-Subscription braucht oder ob Du die auch so durch Zuschicken eines Kaufnachweises an bekommst.
Auf jeden Fall bleibt ReportPro für VO parallel bestehen - denn Du kannst schwer eine X#-Version bei VO einbinden und umgekehrt.
Meines Wissens nach gibt es auch eine neuere Version von ReportPro für VO, aber die bekommst Du nur mit einer FoX-Subscription.
Schließlich muss die Arbeit ja auch irgendwie bezahlt werden - auch das Entwicklungsteam muss schließlich von was leben.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy

www.riedmann.it - docs.xsharp.it

Please Log in or Create an account to join the conversation.

Moderators: wriedmann