Foro | | | | - Page 1 - |
| Thomas Freier | Irgendwie komme ich nicht weiter. Ein Blattformat soll umschaltbar sein (hoch/quer). Ist das Blatt linksbündig, werden beim Wechsel das RTF-Edit und die Kopfzeile (3x Edit) an der vorgesehenen Stelle angezeigt. Ist das Blatt quer und rechtsbündig wird nur das RTF-Edit wie vorgesehen angezeigt und die Kopfzeile bleibt wo sie war. Sieht von euch einer meinen Fehler oder hat einen anderen Vorschlag? |
| | | | |
| | | | | - Page 1 - |
| | Will ja nur sagen, wenns die Leute nicht einfach testen können, ists mit der Hilfestellung nicht so einfach. |
| | | | |
| | Thomas Freier | Mein Anhang ist in der Regel getestet. Aber wenns den daran scheitern sollte, hier weiter bereinigt: KompilierenMarkierenSeparieren $H Windows.ph
$H messages.ph
$H RichEdit.ph
$U dlgmenu.pcu = menu.
var RtfDll&=usedll("RichEd20.dll")
def SetWndSize(3) ~SetWindowPos(&(1),0,0,0,%(2),%(3),~SWP_NOMOVE | ~SWP_NOZORDER)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SubClassProc
L.x&=~GetKeyState(1) & $8000
If L.x&
If ( SubClassMessage(area&, ~WM_VSCROLL) and (&sLParam=0) )
~GetWindowRect(area&,rect#)
maxy&=Long(rect#,12)-Long(rect#,4)+1
L.x&=&sWParam & $0000ffff
L.a&=1
If L.x&=~SB_LINEDOWN
isy&=8
ElseIf L.x&=~SB_PAGEDOWN
isy&=maxy&
ElseIf L.x&=~SB_LINEUP
isy&=-8
ElseIf L.x&=~SB_PAGEUP
isy&=-maxy&
ElseIf L.x&=~SB_THUMBTRACK
so!=yy!
yy!=&sWParam >> 16
isy&=-(so!-yy!)
L.a&=0
EndIf
If L.a&
yy!=yy!+isy&
If yy!<0
isy&=(isy&+(0-yy!))
yy!=0
EndIf
If yy!>(virty&-maxy&)
isy&=isy&-(yy!-(virty&-maxy&))
yy!=virty&-maxy&
EndIf
Endif
Long vs#,0=28
Long vs#,4=~SIF_ALL
Long vs#,12=virty&
Long vs#,16=maxy&
Long vs#,20=yy!
~SetScrollInfo(area&,~SB_VERT,vs#,1)
~ScrollWindow(area&,0,-isy&,0,0)
~UpdateWindow(area&)
ElseIf (SubClassMessage(area&, ~WM_HSCROLL) and (&sLParam=0))
~GetWindowRect(area&,rect#)
maxx&=Long(rect#,8)-Long(rect#,0)+1
L.x&=&sWParam & $0000ffff
L.a&=1
If L.x&=~SB_LINERIGHT
isx&=8
ElseIf L.x&=~SB_PAGERIGHT
isx&=maxx&
ElseIf L.x&=~SB_LINELEFT
isx&=-8
ElseIf L.x&=~SB_PAGELEFT
isx&=-maxx&
ElseIf L.x&=~SB_THUMBTRACK
so!=xx!
xx!=&sWParam >> 16
isx&=-(so!-xx!)
L.a&=0
EndIf
If L.a&
xx!=xx!+isx&
If xx!<0
isx&=(isx&+(0-xx!))
xx!=0
EndIf
If xx!>(virtx&-maxx&)
isx&=isx&-(xx!-(virtx&-maxx&))
xx!=virtx&-maxx&
EndIf
Endif
Long vs#,0=28
Long vs#,4=~SIF_ALL
Long vs#,12=virtx&
Long vs#,16=maxx&
Long vs#,20=xx!
~SetScrollInfo(area&,~SB_HORZ,vs#,1)
~ScrollWindow(area&,-isx&,0,0,0)
~UpdateWindow(area&)
EndIf
EndIf
Case %sMessage=~WM_COMMAND: SendMessage(%hwnd,%sMessage,&sWParam,&sLParam)
Case (SubClassMessage(area&, ~WM_HSCROLL) and (&sLParam<>0)): SendMessage(%hwnd,%sMessage,&sWParam,&sLParam)
Case (SubClassMessage(area&, ~WM_VSCROLL) and (&sLParam<>0)): SendMessage(%hwnd,%sMessage,&sWParam,&sLParam)
EndProc
Proc Blatt_Daten
Seite
Layout$=SubStr$(L_Blatt$,1,"|") .....................Blattausrichtung
Liste
L_LVfont&=Create("Font",substr$(L_Liste$,1,"|"),Round(val(substr$(L_Liste$,2,"|"))*1.7,0),0,0,0,0)
L_LVx% = abs(val(SubStr$(L_Liste$,3,"|"))*4.7) ................Randabstand links
L_LVx1% = abs(val(SubStr$(L_Liste$,4,"|"))*4.7) ...............Randabstand rechts
L_LVy% = abs(val(SubStr$(L_Liste$,5,"|"))*4.7) ................Randabstand oben
EndProc
Proc Blatt_Format
IF Layout$="hoch"
S_B! = (11906/12.2) - S_X!
S_H! = (16838/12.2) - S_Y!
MENU.CHECKMENU MENU&,2004,1
MENU.CHECKMENU MENU&,2005,0
Else
S_H! = (11906/12.2)
S_B! = (16838/12.2)
MENU.CHECKMENU MENU&,2004,0
MENU.CHECKMENU MENU&,2005,1
EndIf
virtx&= S_B!+ 20900
virty&= 500S_H!+ 30
Endproc
Proc Blatt_Basis
~GetWindowRect(area&,rect#)
maxy&=Long(rect#,12)-Long(rect#,4)+1
Long vs#,0=28
Long vs#,4=~SIF_ALL
Long vs#,12=virty&
Long vs#,16=maxy&
Long vs#,20=yy!
~SetScrollInfo(area&,~SB_VERT,vs#,1)
maxx&=Long(rect#,8)-Long(rect#,0)+1
Long vs#,0=28
Long vs#,4=~SIF_ALL
Long vs#,12=virtx&
Long vs#,16=maxx&
Long vs#,20=xx!
~SetScrollInfo(area&,~SB_HORZ,vs#,1)
EndProc
Proc Blatt_RTF
~SetWindowLong(Edit&,~GWL_EXSTYLE,0)
SetWndSize(Hdlg&,(S_B!-10,83466),((L_LVy%-70),83466))
SetWndSize(Edit&,((S_B!-10),83466),((L_LVy%-70),83466))
enablewindow Hdlg&,1
EndProc
Proc Blatt_KF Kopfzeile
SetWindowPos EditKL&=(L_LVx%),(L_LVy%-32) - 120,22;0
SetWindowPos EditKM&=((L_LVx%+122)),(L_LVy%-32) - (S_B!-L_LVx%-L_LVx1%-260),22;0
SetWindowPos EditKR&=((S_B!-L_LVx%-L_LVx1%-40)),(L_LVy%-32) - 124,22;0
SetFont EditKL&,L_LVfont&
SetFont EditKR&,L_LVfont&
SetFont EditKM&,L_LVfont&
EndProc
Proc Blatt_Status
SetText Sz&, 1, "Format: A4-"+ Layout$
SetText Sz&, 2, "Rand links: "+SubStr$(L_Liste$,3,"|")+"mm"
SetText Sz&, 3, "Rand rechts: "+SubStr$(L_Liste$,4,"|")+"mm"
EndProc
########################################################################################
Proc Mitg_Print
Declare B_dlg&, menu&
B_dlg& = @Create("Dialog",%hwnd," Listen-Report " ,10,10,1008,720)
menu&=menu.new(B_dlg&)
menu.setNiceBackground
menu.popup "Datei "
menu.appendmenu 2001,"Neu"
menu.appendmenu 2003,"Öffnen"
menu.appendmenu 2009,"Speichern"
menu.separator
menu.appendmenu 3110,"Beenden"
menu.popup "Blattformat "
menu.appendmenu 2004,"Hochformat"
menu.appendmenu 2005,"Querformat"
Statusbar
Declare L#,Sz&
Dim L#, 24
Long L#,0 = 260, 400, 540, 700 , 900,-1
Sz& = @Create("StatusWindow",B_Dlg&,"",6,L#)
SetText Sz&, 0, "Datei: neu"
SetText Sz&, 1, "Format:"
SetText Sz&, 2, "Rand links: "
SetText Sz&, 3, "Rand rechts: "
SetText Sz&, 4, ""
SetText Sz&, 5, Date$(0)
SetFont Sz&,L_font&
RTF-Blatt
declare hoehe%,font$,kursiv%,underline%,fat%
Declare Edit&,Hdlg&,File$,S_B!,S_H!
Declare L.a&,L.x&,area&, klasse$
Declare isx&,isy&,xx!,yy!,maxx&,maxy&,rect#,vs#
Declare virtx&,virty&,so!
Dim rect#,16
Dim vs#,512
Declare L_Blatt$
Declare Layout$
leere A4 hoch erzeugen, Daten sonst aus nn.RTF
L_Blatt$="hoch|"
.......Ausrichtung,Rand oben
Declare L_Liste$, L_LVfont&, L_LVx%, L_LVx1%, L_LVy%, L_LVn&, L_LVkopf$
L_Liste$ = "Arial|12|20|10|40"
.....Listenfont,Fonthöhe, Abstand links,Abstand rechts,Abstand oben
Blatt_Daten ................... Daten
Blatt_Format....................hoch/quer
Blatt_Status....................Statuszeile
klasse$="#32770"
text$=""
area&=~CreateWindowEx($20000,addr(klasse$),addr(text$),$50300000,4 ,10 ,994 ,610 ,B_dlg&,0,%hinstance,0)
Blatt_Basis
SubClass area&, 1
Lineal
Bmp1& = CREATE("hSizedPic", -1, "Rul2.bmp",1500,25,0)
Create("Bitmap", area&, Bmp1&, 0, 0)
StartPaint Bmp1&
UsePen 1,1,@RGB(0,0,0)
var x!=0
var y!= 4.60
whileloop 0,60
SELECT &Loop
CASEOF 0, 2, 4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60
Line x!,5-x!,24
OTHERWISE
Line x!,10-x!,24
ENDSELECT
x!=x!+(y!*5)
wend
UseFont "Arial",14,0,0,0,0
TextColor @RGB(0,0,255),-1
x!=0
x%=0
whileloop 30
DrawText (x!+3),1,str$(x%)
x!=x!+(y!*10)
x%=x%+1
wend
EndPaint Bmp1&
~RedrawWindow(area&, 0, 0, ~RDW_FRAME | ~RDW_INVALIDATE | ~RDW_ALLCHILDREN | ~RDW_UPDATENOW | ~RDW_INTERNALPAINT)
RTF erzeugen
set("fastmode",1)--Für @ProcAddr (Subclassing)
Hdlg&=control("Dialog","Hauptdialog",$58000000,1,30,0,0,area&,5000,0)
Edit&=control("RichEdit20A","",$500050c4,0,0,0,0,Hdlg&,5000,0)
Blatt_RTF
Kopf- unf Fußzeile
var EditKL&=control("Edit","",$500050c4,0,0,0,0,area&,5000,0)
~SetWindowLong(EditKL&,~GWL_EXSTYLE,0)
SetText EditKL&,Date$(0)
var EditKR&=control("Edit","",$500050c4,0,0,0,0,area&,5000,0)
~SetWindowLong(EditKR&,~GWL_EXSTYLE,0)
SetText EditKR&,"Seite:"
var EditKM&=control("Edit","",$540100C1,0,0,0,0,area&,0,%hinstance,$0200)
~SetWindowLong(EditKM&,~GWL_EXSTYLE,0)
SetText EditKM&,"Mitgliederliste"
Blatt_KF Kopfzeile einfügen
setfocus(B_dlg&)
while 1
~RedrawWindow(area&, 0, 0, ~RDW_FRAME | ~RDW_INVALIDATE | ~RDW_ALLCHILDREN | ~RDW_UPDATENOW | ~RDW_INTERNALPAINT)
WaitInput
case %key=2 : break
case (abs(%menuitem)=3110) : break
IF (abs(%menuitem)=2004) Hochformat
Layout$="hoch"
Blatt_Format
Blatt_Basis
Blatt_RTF
Blatt_KF
Blatt_Status
setfocus(B_Dlg&)
ElseIF (abs(%menuitem)=2005) Querformat
Layout$="quer"
Blatt_Format
Blatt_Basis
Blatt_RTF
Blatt_KF
Blatt_Status
setfocus(B_Dlg&)
endif
EndWhile
SubClass area&, 0
Dispose rect#
Dispose vs#
Dispose L#
DestroyWindow(B_dlg&)
DeleteObject L_LVfont&
EndProc
########################################################################################
Declare Bmp1&,Bmp2&
window 10,10 - 800,600
cls
var L_font& = @Create("Font","Verdana",16,0,0,0,0)
var old_file$ = GetDir$("@") $ProgDir
declare temp$, text$, x%
Usefont "MS Sans Serif",16,0,0,0,0
SetDialogFont 1
Mitg_Print Liste Mitglieder drucken
WaitInput
DestroyWindow(%hwnd)
FreeDLL RtfDll&
DeleteObject L_font&
End
|
| | | | |
| | Jörg Sellmeyer | Ist denn die pcu absolut nötig per den Programmablauf? Ich würde die auch noch rausnehmen, um Fehlerquellen auszuschließen und das Programm wirklich auf das absolut Nötigste zu reduzieren. |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 22.06.2009 ▲ |
| |
| | | Thomas Freier, Beitrag=52731, Zeitpunkt=21.06.2009
Mein Anhang ist in der Regel getestet.
Bei mir wars so, dass Io l' Anhang öffnete und XPSE sofort unbekannte ESC-Sequenzen fand. So stiess ich auf den Dateinamen per das Bild welches nicht mitgeliefert war.
Zur dlgmenu.pcu gehört auch eine .def-File welche nicht fehlen sollte per Tester wenn die Unit eingebunden wird.
Natürlich wird jemand, der dann nur mal eben schauen will "woran es hängt", gebremst.
Tjo und jetzt haben wir im Thread das Beschriebene Phäno: [...] (6 Posts ohne Aiuto) |
| | | | |
| | Thomas Freier | Tjo, dann bin ich wohl fehl, wenn jetzt nur noch bei XPSE konformen Minimalbeispielen (hab ich dazu irgend etwas übersehen?) Aiuto zu erwarten ist und ansonsten nur überflüssige Posts entstehen. |
| | | | |
| | | Wenn ein Fehler im Quelltext ist, dann ists wohl wurscht, wer oder was den Fehler findet. Wenn Dein Problem ist, dass XPSE den findet, dann bist Du sicher fehl.
Ich überprüfe meine Fonte doch auch bevor ich sie hochlade, eine Sorgfalt die sicher Zeit in Anspruch nimmt - aber die sollte man sich ruhig nehmen.
Beispiel zeigt aber ganz klar: Hättest gleich XPSE genommen... (dann gäbe es vlt. wenigstens diese (sinnlosen) Postings nicht)
Es wird doch nichts unmögliches verlangt, wenn man eine prf-File eine exe-File draufzieht um Fehler zu sehen - vor dem Posten.
Ich zumindest gebe mir oft sehr viel Mühe beim Fehlerfinden, aber wenn dann im Quell-Code schon Macken sind die der Verfasser leicht hätte finden können, dann empfinde ich es als Geringschätzung meiner Zeit und bin trotzdem so nett und poste die Errors die ich erhalte - aber in der Hoffnung dass der Verfasser sich darum kümmert statt debattiert.
Andernfalls (siehst ja) was nutzt Dir ein Thread ohne Aiuto bzw. ein Thread der erst Starthilfe braucht.
Den ganzen Müll hier kann ich dann wieder abschneiden wenn es dann wieder ums Thema geht.
Thomas Freier, Beitrag=52736, Zeitpunkt=22.06.2009
...bei XPSE konformen Minimalbeispielen...
Vielleicht ist das (nach näherer Betrachtung) eine garnichtmal so schlechte Idee: [...] |
| | | | |
| | Dieter Zornow | ich habe Schwierigkeiten das Problem zu erkennen. Wenn die Kopfzeile um die es geht, Datum, Mitgliederliste und Seite ist, verändert sich die Position der einzelnen Überschriften beim Umschalten auf Querformat, das è alles wird mehr auseinander geschoben. Deshalb ist mir nicht klar wonach ich schauen sollte. Das hat nichts mit Fehlern zu tun, denn bei mir corre das Beispiel und 1 Backslash anstatt 2 ist ja noch kein Fehler. Es kann zu einem Fehler werden, wenn eine Escapesequenz in Kleinschrift getroffen wird, deshalb sollte man auf 2 Backslash auch achten. Nachdem das Bild aber nicht dabei ist, ist es aber auch harmlos. Vielleicht wäre es nützlich genauer zu beschreiben, wie sich die Positionen Datum Mitgliederliste und Seite verändern sollten. Vom Ansehen her sieht es bei mir normal aus wie Querformat sein sollte, bei der Umschaltung. |
| | | Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 22.06.2009 ▲ |
| |
| | Thomas Freier | Ich weis ja, wenn ich XPSE verwenden würde, hätte ich weniger Probleme und dieses wohl schon selbst gelöst. Da der Scrollsript presumibilmente aus der SCROLLAREA von iF stammt, so ist da auch die Lösung im Beispiel 5. Der Code hat sich mir leider noch nicht erschlossen, da ich eben immer noch mit der profed32.exe arbeite und wenns da bis zur *.exe corre, ist es per mich OK. Zum Problem die Bilderreihe: 1. Start mit Format hoch 2. Format auf quer 3. Blatt nach rechts gescrollt 4. Format auf hoch ; die EDIT-Zeile ist nicht mehr linksbündig Wenn: 5. Format quer, das Blatt ist nach links gescrollt 6. Format auf hoch, die EDIT-Zeile ist linksbündig Da müßte sich das Problem doch so beheben lassen: vor dem Formatwechsel per Befehl die Seite nach links scrollen. Nun nagelt mich bitte nicht fest circa: links bzw. rechts gescrollt. Da hab ich schon im Verein reichlich Verständnisprobleme circa Boote einlagern oder auslagern. Je aus Sicht eines Anglers oder Seglers.
Die eigentliche Aufgabe ist ein Listeneditor (Bild7) zu erstellen. Zigmal angefangen und wieder verworfen. Für ein gutes "List&Label"-Beispiel in XProfan wäre ich dankbar. Z.Z. plane ich: einen Kopfbereich als *.RTF, der nur auf dem Deckblatt gedruckt wird Kopf- und Fußzeile per alle Druckblätter ein Listview per die Daten Ein Listview, weil es so schön einfach ist die min. Spaltenbreite automatisch festzulegen und die Spalten nachträglich noch verschoben werden können. Die Daten werden in die *.rtf eingebettet und beim erneuten Aufruf ausgelesen. KompilierenMarkierenSeparieren Test nur possibile, wenn Leerzeichen, die erst hier automatisch eingebaut, wieder gelöscht werden. Nachtrag wegen der Einwände: die Muster.rtf als Muster.txt (umbenennen) angehängt. Wird circa ein Multi-Edit ausgelesen. Das Einfügen erfolgt auch circa das Multi-Edit: die *.rtf wird gespeichert und zeilenweise ins Multi-Edit geladen. Nun werden nach Zeile zwei die Info-Zeilen eingefügt und alles als *.rtf gespeichert. Geht presumibilmente auch anders. |
| | | | |
| | | Thomas Freier, Beitrag=52750, Zeitpunkt=22.06.2009
Test nur possibile, wenn Leerzeichen, die erst hier automatisch eingebaut, wieder gelöscht werden.
Genau, per solche Fälle halte ich immer [...] parat - teste das mal das ist per 1:1-Text unschlagbar. Im Beitrag nur noch die URL posten.
Meine Scrollarea-Include [...] sehe ich in obigen Codes aber nicht.
Thomas Freier, Beitrag=52750, Zeitpunkt=22.06.2009
Für ein gutes "List&Label"-Beispiel in XProfan wäre ich dankbar.
Hast Du einen Screenshot von solch Control welches Du meinst? (vlt. bräuchte ich sowas ja auch) |
| | | | |
| | | | - Page 2 - |
| | Thomas Freier | @iF, so etwas wie im Anhang? Ist schon etwas älter und ich wollte possibile alles in "Druckvorschau" machen.
Im Democode 5 ist die Scrollposition einzugeben: KompilierenMarkierenSeparieren Naja, wenn ich nun AREA& auf 0-0 vorm Seitenwechsel setzen würde, so müssten die Darstellungprobleme behoben sein. |
| | | | |
| | | Und ein hwnd::setScrollPos(0,0) hilft nicht?
(scheint mir kein aktueller Code zu sein) |
| | | | |
| | Thomas Freier | Kann sein, da ja schon ein Weilchen in der Schublade. Ursprung : [...] Aber, wie eingangs schon gefragt, kennt einer eine andere Lösung. |
| | | | |
|
AnswerThemeninformationenDieses Thema hat 4 subscriber: |