| |
|
|
| Um mein Problem zu erläutern, zuerst ein Bildchen
Wenn nun die im Beispiel betonte Zeile gelöscht oder in die andere Anzeige kopiert wird, stimmt der Rechnungsverlauf nicht mehr. - Wie kann ich es lösen, dass sich die Anzeige verbessert, also aktualisiert ? - Es müsste gehen, aber ich habe absolut keine Vorstellung von einem Anfang - wer hilft ? Die Datei (oder andere) wird als CSV-Datei gespeichert da sie in der Listview.dll von Frank angezeigt wird. Für Freaks: Man beachte die Datumsanzeige ! |
|
|
| |
|
|
|
Michael Wodrich | Auslesen der Zeile Wert ermitteln Dann - löschen (Wert abziehen) - verschieben (hier Wert löschen, dort addieren)
Verständlich?
Wird ein feines Tool.
Schöne Grüße Michael Wodrich
Ich weiß nicht, ob Du eine Message über die Lösch- oder Drag&Drop-Tätigkeit erhälst. Wenn das nicht der Fall ist, dann wird unten ein Knöpfchen Löschen bzw Verschieben den Prozess in Gang setzen. |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 30.12.2007 ▲ |
|
|
|
|
| @Michael Soweit war ich auch schon - Den Wert der gelöschten (kopierten) Zeile vom letzten Gesamtwert abziehen und (wenn kopiert) in der neuen Anzeige zuzählen. Soweit, so gut. Die anderen Einträge sind aber dann nicht aktualisiert worden. Wenn ich z. B. 5 Einträge hab und jeder ist anders im Wert und ich lösche den zweiten Eintrag, stimmt der Rechnungsverlauf im 3. und 4. Eintrag nicht mehr. Der Endwert im 5. Eintrag wäre dann wieder richtig und da liegt mein Problem |
|
|
| |
|
|
|
Thomas Freier | Ich würde die Beträge als +999 oder -999 einfügen und speichern ohne Zwischenstand. Wenn der Istbetrag, der ja gross angezeigt wird, nicht reicht, die Werte der letzten Spalte beim Anzeigen ausrechnen lassen. Beim Datum könntest du durch Prüfen ein Vordatieren verhindern. Wird eine Buchung verändert, einfach die letzte Spalte neu berechnen lassen. |
|
|
| |
|
|
|
Dieter Zornow | Hallo Horst,
ich wuerde ueber eine Schleife die kompletten Werte neu berechnen.
Gruss aus Bangkok
Dieter |
|
|
| Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 31.12.2007 ▲ |
|
|
|
|
| @Dieter
ich wuerde ueber eine Schleife die kompletten Werte neu berechnen.
Den Gedanken hatte ich schon, aber wie ??? -
@Thomas Das mit der Datumsanzeige hast Du falsch verstanden. Auf Wunsch eines einzelnen Herren habe ich das automatische Datum aus der Version 1 (MoneyGuard) so umgestaltet, dass jetzt jede Datumseingabe entweder über das Kalendertool aus Windows, mit eigenen Eingaben oder automatisch möglich ist. Eine Kontrollfunktion soll dann Termine für Zahlungen oder Eingänge melden. -
Mein Problem ist nach wie vor die Aktualisierung der Rechnungswege.
@Frank Kann es sein dass Du Listview_Funktionen.inc unter XProfan-11 angleichen musst oder hab ich eine veraltete Version der Include-Datei ? |
|
|
| |
|
|
|
Frank Abbing |
Kann es sein dass Du Listview_Funktionen.inc unter XProfan-11 angleichen musst oder hab ich eine veraltete Version der Include-Datei ?
Inwiefern? |
|
|
| |
|
|
|
Thomas Freier | Nur ein schnell gestricktes Muster aus einer anderen Anwendung: KompilierenMarkierenSeparieren~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Franks ListView
Declare lvdll&,bereich#,bytes&
Declare handle&,indexline&,status&,x&,xn1!,xn2!
vdll&=usedll(bvr/Listview.dll)
$I Listview_Funktionen.inc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Mein Konto ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Proc Rechne_MeinKonto
DIM bereich#,1024
Decimals 2
GetItemText(listview_B&,bereich#,2,0)
text$=String$(bereich#,0)
SetItemText(listview_B&,addr(text$),3,0)
WhileLoop GetLines(listview_B&)
GetItemText(listview_B&,bereich#,3,(&Loop-1))
xn1!=val(String$(bereich#,0))
GetItemText(listview_B&,bereich#,2,&Loop)
xn2!=val(String$(bereich#,0))
text$= str$(xn1! + xn2!)
SetItemText(listview_B&,addr(text$),3,&Loop)
EndWhile
AddItemValues(listview_B&,2,bereich#,2)
SetText num33&,Kontostand: + String$(bereich#,0)
Dispose bereich#
EndProc
Proc Konto_Liste
Def @Waitmessage(0) !USER32,WaitMessage
Declare num33&,Boot_dlg&,listview_B&,BP_but1&,BP_but2&,BP_but3&,BP_but4&,BP_but5&,BP_but6&
Boot_dlg& = @Create(Window,%hwnd, Mein Konto ,50,24,896,680)
Zeile neu
BP_but1& = CreateButton(Boot_dlg&,Neu,40,620,80,25)
Zeile löschen
BP_but2& = CreateButton(Boot_dlg&,Löschen,160,620,80,25)
Liste speichern
BP_but5& = CreateButton(Boot_dlg&,Speichern,650,620,80,26)
Ende Button
BP_but4& = CreateButton(Boot_dlg&,Ende,740,620,80,25)
num33&=@Control(STATIC,,$50000080,350,624,160,13,Boot_dlg&,1,%hinstance,$1000)
SetFont num33&,lfont&
listview_B&=CreateListView(Boot_dlg&,%hinstance,Rgb(0,0,0),Rgb(250,250,250),-1,$21)
InsertColumn listview_B&,Eingabe / Ausgabe,490,0
InsertColumn listview_B&,Datum,100,1
InsertColumn listview_B&,Betrag,100,1
InsertColumn listview_B&,Stand,100,1
text$=MeinKonto.csv
bytes&=@FileSize(text$)
If bytes&>0
Dim bereich#,bytes&
ReadFileQuick(addr(text$),bereich#,0,bytes&)
CsvToListview(listview_B&,bereich#,bytes&,4)
Dispose bereich#
EndIf
SetFont listview_B&,lfont&
AutoSortListview listview_B&,1,1,1
ShowListView(listview_B&,32,22,820,560)
Rechne_MeinKonto
InitMessages(Boot_dlg&)
EnableEdits(listview_B&,1)
@SetFocus(Boot_dlg&)
Usecursor 0
While %Menuitem<>-2
@Waitmessage()
x&=GetVar(0)
IfNot x&
Rechne_MeinKonto
EndIf
If GetFocus(BP_but2&)
x&=GetSelectedLine(listview_B&) Nummer der markierten Zeile abfragen
case x& > 0 : Sendmessage(listview_B&,$1008,x&,0) Zeile löschen
ElseIf GetFocus(BP_but1&) Erzeugt eine neue Zeile, scrollt dort hin
und selektiert sie (alle anderen werden deselektiert)
SetItem listview_B&,,,
x&=GetLines(listview_B&)
SelectLine(listview_B&,(x&-1),1)
ElseIf GetFocus(BP_but5&)
text$=MeinKonto.csv
x&=GetNeededMemory(listview_B&,1)
Dim bereich#,x&
x&=ListviewToCsv(listview_B&,bereich#,0,0)
x&=WriteFileQuick(addr(text$),bereich#,0,x&)
Dispose bereich#
MessageBox Liste gespeichert...,Information,$40040
@SetFocus(Boot_dlg&)
ElseIf GetFocus(BP_but4&)
BREAK
EndIf
Usecursor 0
Wend
@DestroyWindow(Boot_dlg&)
Endproc
################################## H A U P T T E I L ####################################
WINDOWSTYLE 512+8+2
WINDOW 1,1-%maxx,710
SETTRUECOLOR 1
Cls RGB(230,230,200)
USEFONT Arial,16,0,0,0,0
SETDIALOGFONT 1
Declare text$
var lfont& = @Create(Font,Arial,15,0,0,0,0)
Konto_Liste
freedll lvdll&
DeleteObject lfont&
$I Listview_Dispose.inc
End
CSV-Anhänge mag er nicht. Erzeuge mit dem Inhalt eine : MeinKonto.csv KompilierenMarkierenSeparieren |
|
|
| |
|
|
|
| @Frank
Inwiefern?
Mit der Version 11 meckert XProfan über die Sub... in Deiner listview_funktionen.inc - Roland hat dazu extra eine Inc-Datei mitgeliefert für alte Programme profalt.inc für alte Profan-Programme, die keine Operatoren benutzen. Daher dachte ich, dass Du das Sub in Deiner INC auch modernisieren müsstest |
|
|
| |
|
|
|
| @Thomas KompilierenMarkierenSeparierenGetItemText(etatO&,bereich#,3,2)
teil$=String$(bereich#,0)
print teil$
GetItemText(etatO&,bereich#,4,(anzO%-1))
end$=String$(bereich#,0)
print end$
teil!=VAL(teil$)
end!=VAL(end$)
end!=(end!-teil!)
betragO$=STR$(end!)
print betragO$
Sendmessage(etatO&,$1008,2,0)
OBEN_AKTIV Hier wird die Anzeige in einer eigenen Procedur aktualisiert
So sieht mein Probecode aus und ich denke, dass unterm Strich das herauskommt, was mir vorschwebt. Printen tut er schon mal das, was ich will. Jetzt nur noch in die Schleife und dann neu abspeichern. (Wunder Dich nocht über die grossen O - da ich mit zwei Anzeigen arbeite, hab ich die Variablen mit Oben und Unten getrennt) |
|
|
| |
|
|
|
Frank Abbing |
Daher dachte ich, dass Du das Sub in Deiner INC auch modernisieren müsstest
Natürlich, mit der neuen Version gibt es dann eine geänderte Inc. Ist sowieso erheblich schlanker geworden, da ich sechs Procs und Defs jetzt direkt in die Dll integriert habe. |
|
|
| |
|
|
|
| @Frank
[offtopic] Nun verrate uns doch mal, wer die Hübsche auf Deinem Atavar ist ? - Deine Enkelin oder... ? [/offtopic] |
|
|
| |
|
|