eXPress++: GUI-Beispiele
Moderator: Moderatoren
- Rudolf
- Programmier-Gott
- Beiträge: 1418
- Registriert: Mo, 02. Jan 2006 23:03
- Wohnort: Salzburg/Österreich
- Kontaktdaten:
Hallo Manfred,
habe auch lange gezögert, aber mit eXPress++ kannst Du gleich wie im Textmodus programmieren, sogar noch einfacher. Der Code ist weit kompakter als mit Standard XBase++ und da hast viel mehr Möglichkeiten. Wenn Du Beispiele brauchst, kann ich Dir welche senden.
Grüsse
Rudolf
habe auch lange gezögert, aber mit eXPress++ kannst Du gleich wie im Textmodus programmieren, sogar noch einfacher. Der Code ist weit kompakter als mit Standard XBase++ und da hast viel mehr Möglichkeiten. Wenn Du Beispiele brauchst, kann ich Dir welche senden.
Grüsse
Rudolf
Rudolf Reinthaler
http://www.formcommander.net
http://www.formcommander.net
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Rudolf
Wie kann ich einen Textmodus einfacher, oder anders programmieren als bisher?
Ich habe mir zwar die Demo von express++ heruntergeladen, bin aber bisher noch nicht dazu gekommen mir das näher anzusehen...
Das wäre nett, im Moment kann ich mir nicht so richtig vorstellen, was da wie und wo ablaufen soll.Wenn Du Beispiele brauchst, kann ich Dir welche senden.
Wie kann ich einen Textmodus einfacher, oder anders programmieren als bisher?
Ich habe mir zwar die Demo von express++ heruntergeladen, bin aber bisher noch nicht dazu gekommen mir das näher anzusehen...
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16508
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
- Rudolf
- Programmier-Gott
- Beiträge: 1418
- Registriert: Mo, 02. Jan 2006 23:03
- Wohnort: Salzburg/Österreich
- Kontaktdaten:
Hallo Manfred,
habe hier einen einfachen Dialog, der Vorteil ist zusätzlich, dass sich das Fenster des Dialogs automatisch anpasst.
@ 1,1 DCSAY "Seriennummer" GET ser->serien_nr SAYSIZE 12 VALID {||issernr(ser->serien_nr} WHEN {||is_ok()}
@ 2,1 DCSAY "Lager Nr." GET ser->lager SAYSIZE 12
@ 3,1 DCSAY "Datum" GET ser->datum SAYSIZE 12 POPUP {|d|DC_PopDate(d,,,,,,2)}
@ 4,1 DCSAY "Eingangsdatum" GET ser->eingang SAYSIZE 12 POPUP {|d|DC_PopDate(d,,,,,,2)}
@ 5,1 DCSAY "Auftrag" GET ser->auftrag SAYSIZE 12
@ 6,1 DCSAY "Lieferschein" GET ser->liefers SAYSIZE 12
@ 7,1 DCSAY "Rechnung" GET ser->rechnung SAYSIZE 12
@ 8,1 DCSAY "Gutschrift" GET ser->gutschr SAYSIZE 12
@ 9,1 DCSAY "Lieferdatum" GET ser->lieferdat SAYSIZE 12 POPUP {|d|DC_PopDate(d,,,,,,2)}
@ 10,1 DCSAY "Rechnungsdatum" GET ser->rechdat SAYSIZE 12 POPUP {|d|DC_PopDate(d,,,,,,2)}
DCREAD GUI FIT MODAL ADDBUTTONS TO lOk TITLE "Sereinnummer"
if lOk
......
endif
Für einen einfachen Browser:
@ .1,.5 DCBROWSE oBrowse5 ALIAS "PREIS" SIZE 120,25 DATALINK {||preis->(add_preis(2,getlist,oBrowse5))} CURSORMODE XBPBRW_CURSOR_ROW
DCBROWSECOL FIELD preis->PREIS WIDTH 8 HEADER 'Nummer' PARENT oBrowse5
DCBROWSECOL FIELD preis->vk WIDTH 8 HEADER 'Preis' PARENT oBrowse5
DCBROWSECOL FIELD preis->kunde WIDTH 8 HEADER 'Kunde' PARENT oBrowse5
DCBROWSECOL FIELD preis->KARTIKEL WIDTH 15 HEADER 'Kundenartikelnummer' PARENT oBrowse5
DCREAD GUI FIT MODAL TITLE "Browser"
Grüsse
Rudolf
habe hier einen einfachen Dialog, der Vorteil ist zusätzlich, dass sich das Fenster des Dialogs automatisch anpasst.
@ 1,1 DCSAY "Seriennummer" GET ser->serien_nr SAYSIZE 12 VALID {||issernr(ser->serien_nr} WHEN {||is_ok()}
@ 2,1 DCSAY "Lager Nr." GET ser->lager SAYSIZE 12
@ 3,1 DCSAY "Datum" GET ser->datum SAYSIZE 12 POPUP {|d|DC_PopDate(d,,,,,,2)}
@ 4,1 DCSAY "Eingangsdatum" GET ser->eingang SAYSIZE 12 POPUP {|d|DC_PopDate(d,,,,,,2)}
@ 5,1 DCSAY "Auftrag" GET ser->auftrag SAYSIZE 12
@ 6,1 DCSAY "Lieferschein" GET ser->liefers SAYSIZE 12
@ 7,1 DCSAY "Rechnung" GET ser->rechnung SAYSIZE 12
@ 8,1 DCSAY "Gutschrift" GET ser->gutschr SAYSIZE 12
@ 9,1 DCSAY "Lieferdatum" GET ser->lieferdat SAYSIZE 12 POPUP {|d|DC_PopDate(d,,,,,,2)}
@ 10,1 DCSAY "Rechnungsdatum" GET ser->rechdat SAYSIZE 12 POPUP {|d|DC_PopDate(d,,,,,,2)}
DCREAD GUI FIT MODAL ADDBUTTONS TO lOk TITLE "Sereinnummer"
if lOk
......
endif
Für einen einfachen Browser:
@ .1,.5 DCBROWSE oBrowse5 ALIAS "PREIS" SIZE 120,25 DATALINK {||preis->(add_preis(2,getlist,oBrowse5))} CURSORMODE XBPBRW_CURSOR_ROW
DCBROWSECOL FIELD preis->PREIS WIDTH 8 HEADER 'Nummer' PARENT oBrowse5
DCBROWSECOL FIELD preis->vk WIDTH 8 HEADER 'Preis' PARENT oBrowse5
DCBROWSECOL FIELD preis->kunde WIDTH 8 HEADER 'Kunde' PARENT oBrowse5
DCBROWSECOL FIELD preis->KARTIKEL WIDTH 15 HEADER 'Kundenartikelnummer' PARENT oBrowse5
DCREAD GUI FIT MODAL TITLE "Browser"
Grüsse
Rudolf
Rudolf Reinthaler
http://www.formcommander.net
http://www.formcommander.net
da hier so von express geschwärmt wird ... habe ich mir das mal auf der homepage angeschaut .... und zwar in erster Linie wegen der Druckausgabe:Josef hat geschrieben:Also ich kann eXPress nur empfehlen. Für eine GUI Anwendung sind nur einige Änderungen im Source Code notwendig und schon hat man richtig schöne Windows-Fenster.
#include "dcdialog.ch"
procedure Xtest()
LOCAL oPrinter, i
USE collect
BEGIN SEQUENCE
oPrinter := DC_PRINTER():new()
IF Valtype(oPrinter) # 'O' .OR. !oPrinter:lActive
BREAK
ENDIF
FOR i := 1 TO oPrinter:nCopies
oPrinter:nPage := 1
GO TOP
DO WHILE !Eof()
oPrinter:SetFont('16.Arial')
oPrinter:AtSay(1,10,'My Collection')
oPrinter:AtSay(1,30,'Page ' + Alltrim(Str(oPrinter:nPage)))
oPrinter:BitMap( 4,10,50,20, COLLECT->bitmap1 )
oPrinter:SetFont('12.Courier New')
oPrinter:AtSay(24,10,' Description:')
oPrinter:AtSay(25,10,' Type:')
oPrinter:AtSay(26,10,' Sub-Type:')
oPrinter:SetFont('14.Terminal')
oPrinter:AtSay(24,32,COLLECT->descrip)
oPrinter:AtSay(25,32,COLLECT->type)
oPrinter:AtSay(26,32,COLLECT->sub_type)
oPrinter:Eject()
SKIP
ENDDO
NEXT
oPrinter:Destroy()
END SEQUENCE
RETURN
habe ich das richtig verstanden .. die von mir FETT gemachte Zeile im source code: oPrinter:BitMap... druckt mir eine Grafik wohin immer ich will ...
wenn ja ... Frage: welche Grafiken kann ich verwenden , wie wird die Grafik in der Datenbank abgespeichert ...
Gruß DVDbommel
- Rudolf
- Programmier-Gott
- Beiträge: 1418
- Registriert: Mo, 02. Jan 2006 23:03
- Wohnort: Salzburg/Österreich
- Kontaktdaten:
Hallo DVDBommel,
sorry für die späte Antwort, habe zwar schon mal eine geschrieben, dürfte aber verloren gegangen sein.
Du kannst BMP, JPG und BMP problemlos darstellen.
Grüsse
Rudolf
sorry für die späte Antwort, habe zwar schon mal eine geschrieben, dürfte aber verloren gegangen sein.
Du kannst BMP, JPG und BMP problemlos darstellen.
Grüsse
Rudolf
Rudolf Reinthaler
http://www.formcommander.net
http://www.formcommander.net
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9357
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Hallo, DVDBommel.
Dein Beispiel hat allerdings so gut wie nix mit eXPress++ zu tun. Da sähe das in etwa so aus:
Dein Beispiel hat allerdings so gut wie nix mit eXPress++ zu tun. Da sähe das in etwa so aus:
Code: Alles auswählen
DCPRINT ON FONT "10.Arial" TO oPrinter NAME cMyPRinter FORMSIZE 9 NOSTOP
@ 2.5,4,5.5,75 DCPRINT BOX
DCPRINT FONT "13.Arial"
@ 3,5 DCPRINT SAY cDocumentName
DCPRINT FONT "11.Arial.italic"
@ 4.2,5 DCPRINT SAY "Stand: "+dtoc(date())+", "+time()
DCPRINT FONT "9.Courier New"
@ 6.5,5 DCPRINT SAY "Hier ist Ihr Bild:"
[color=red]@ 8,5,22,58 DCPRINT BITMAP "mypicture.bmp" AUTOSCALE[/color]
DCPRINT OFF
Herzlich,
Tom
Tom
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9357
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Hallo, DVDBommel.
Was bedeutet Dein Nick eigentlich?
Im PRG:
Müßte m.E. reichen.
Was bedeutet Dein Nick eigentlich?
Im PRG:
Code: Alles auswählen
#include "dcdialog.ch"
#include "dcprint.ch"
#pragma library("dclipx.lib")
Herzlich,
Tom
Tom
@ TOM super ... DANKE werde es heute abend mal probieren ...
ÄHM ach ja wegen dem NICK
der kommt zum Teil noch aus meiner Schulzeit ( Abi 86 )
da gab es mal eine SERIE "Ich heirate eine Familie" ... und da hieß das Meerschweinchen BOMMEL ... und irgendwann kam eine weibliche Mitschülerin auf die Idee ich wäre so süß wie jene Meersau ... und da hatte ich den Spitznamen für immer weg ...
das DVD habe ich dann irgendwann mal davorgesetzt weil ich ja älter geworden bin und zwar als die DVD's aufkamen .... Da ich ein absoluter
FILM FREAK BIN ... manche meinen auch FILM SPINNER weil ich alle möglichen Filme auf DVD archiviere ... die ich wahrscheinlich zeitlich nie mehr anschauen kann solange ich lebe ...
deshalb DVDbommel
hoffe du bist mit meiner Erklärung zufrieden
GRUß
ÄHM ach ja wegen dem NICK
der kommt zum Teil noch aus meiner Schulzeit ( Abi 86 )
da gab es mal eine SERIE "Ich heirate eine Familie" ... und da hieß das Meerschweinchen BOMMEL ... und irgendwann kam eine weibliche Mitschülerin auf die Idee ich wäre so süß wie jene Meersau ... und da hatte ich den Spitznamen für immer weg ...
das DVD habe ich dann irgendwann mal davorgesetzt weil ich ja älter geworden bin und zwar als die DVD's aufkamen .... Da ich ein absoluter
FILM FREAK BIN ... manche meinen auch FILM SPINNER weil ich alle möglichen Filme auf DVD archiviere ... die ich wahrscheinlich zeitlich nie mehr anschauen kann solange ich lebe ...
deshalb DVDbommel
hoffe du bist mit meiner Erklärung zufrieden
GRUß
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2934
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
der befehl führt bei mir zu einer Fehlermeldung ...Wolfgang Ciriack hat geschrieben:Hallo DVDbommel,
Setze einfach noch ein DCPRINTOPTIONS USEDEFAULT davor, dann sollte es ohne Abfrage des Druckers auf dem Standarddrucker ausgegeben werden.
kann mir vielleicht doch noch mal jemand helfen...
Drucken auf STANDART DRUCKER ohne POP UP auswahlmenü des Druckers
hier nochmal der CODE: hier macht er natürlich ein POPup auf
#include "dcdialog.ch"
#include "dcprint.ch"
#pragma library("c:\alaska\exp19\bin\dclipx.lib")
procedure Main
LOCAL oPrinter, i, j
DCPRINT ON FONT "10.Arial" TO oPrinter FORMSIZE 9 NOSTOP
@ 2.5,4,5.5,75 DCPRINT BOX
DCPRINT FONT "13.Arial"
@ 3,5 DCPRINT SAY "test"
DCPRINT FONT "11.Arial.italic"
@ 4.2,5 DCPRINT SAY "Stand: "+dtoc(date())+", "+time()
DCPRINT FONT "9.Courier New"
@ 6.5,5 DCPRINT SAY "Hier ist Ihr Bild:"
@ 8,5 DCPRINT BITMAP "test.bmp" AUTOSCALE
DCPRINT FONT "11.Arial.italic"
@ 13,5 DCPRINT SAY "Stand: "+dtoc(date())+", "+time()
DCPRINT OFF
return
Gruß DVDbommel
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9357
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Hallo, DVDBommel.
Code: Alles auswählen
[color=red]LOCAL aPrintOptions := {}
DCPRINT OPTIONS to aPrintOptions USEDEFAULT[/color]
DCPRINT ON FONT "10.Arial" TO oPrinter FORMSIZE 9 NOSTOP [color=red]OPTIONS aPrintOptions[/color]
Herzlich,
Tom
Tom
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9357
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Keine Ursache.
Übrigens empfehle ich dringend, die Xdemo bzw. Samples von eXPress++ durchzuarbeiten. Das Konzept ist wirklich simpel, jedes Beispiel ist direkt lauffähig und zeigt seinen eigenen Quellcode an. XDEMO.EXE im BIN-Verzeichnis. Wenn man das Prinzip verstanden hat, kann man eine Clipper-App innerhalb von ein paar Tagen vollständig nach GUI portieren.
Übrigens empfehle ich dringend, die Xdemo bzw. Samples von eXPress++ durchzuarbeiten. Das Konzept ist wirklich simpel, jedes Beispiel ist direkt lauffähig und zeigt seinen eigenen Quellcode an. XDEMO.EXE im BIN-Verzeichnis. Wenn man das Prinzip verstanden hat, kann man eine Clipper-App innerhalb von ein paar Tagen vollständig nach GUI portieren.
Herzlich,
Tom
Tom