Forum | | | | funkheld | Hallo, gutenTag. Als DX'ler möchte ich meine QSL festhalten in eine Tabelle, so wie ungefähr auf dem BIld. In einem kleinen Fenster unterhalb vom aufgelisteten Text sollte irgendwie die Eingabe in Felder gemacht werden und nach dem Buttonklick oben eingetragen werden und auch weiterscrollen wenn die obere Seite voll ist. Oben in den Spalten soll keine Editorfunktion sein. Der gesamte Spaltentext oben soll auch abgespeichert werden können, so das ich ihn Später wieder einladen kann. Das Einladen möchte ich dann wieder mit einem seperaten Profanprogramm machen, welches dann aber hier vom ersten gestartet werden soll. Das einladen soll hier aber noch kein Thema sein.
Ich brauche mal die ersten Schritte dafür.
Danke.
Gruss
|
| | | | |
| | | Hi!
Was bedeuten die Begriffe "DX" und "QSL" für Dich?
Als DX'ler könntest durchaus ein Direct-X'ler sein und das Du eine QSL-Strippe bist wäre rein unterstellt! |
| | | | |
| | funkheld | DX ist Empfangen...ich bin Kurzwellenhörer. QSL heisst eine Empfangsbestätigung der Sprache, Morsezeichen usw, wie die bei mir am Kurzwellenempfänger ankommen. Es soll eine Auflistung aller Sendungen mit der Tabelle gemacht werden. Ich brauche nur die Hilfe wie oben die Daten reinkommen von unten aus den einzelnen Stringfeldern und wie die dann oben abgespeichert werden.
Danke.
Gruss |
| | | | |
| | | Ah, danke für die Info!
Bitte speichere einfach hier ( [...] ) welche XProfan-Version Du nutzt - je nach dem fallen Lösungen durchaus unterschiedlich aus.
Das dargestellte Listen-Control ist offensichtlich ein sog. SysListView32 bzw. ein "ListView" bzw. in XProfan "GridBox" genannt.
In XProfans Hilfedatei sind unter Punkt 20.8 "GridBoxen" beschrieben sowie dieses Beispiel aufgeführt:
'Programm gridboxtest.prf
Declare Ende%, Anzeige%, X%, Feld$, Dlg%
Declare hGrid&, Titel$
Cls
Dlg% = Create("Dialog", %Hwnd, "GridBox", 220, 190, 410, 280)
Anzeige% = Create("Button", Dlg%, "Anzeigen", 110, 220, 80, 30)
Ende% = Create("Button", Dlg%, "Ende", 210, 220, 80, 30)
' 1. Spalten definieren
Titel$ = "Links;0;180;Mitte;2;100;Rechts;1;80"
' 2. Gridbox erstellen
hGrid& = Create("GridBox", Dlg%, Titel$, 3, 3, 0, 400, 190)
' 3. hier werden die Gridbox-Zeilen hinzugefügt
AddString(hGrid&, "AB|DEF|0123")
AddString(hGrid&, "GHI|J23KL|012345")
AddString(hGrid&, "*|MNOP|PQR|")
AddString(hGrid&, "STU||V")
AddString(hGrid&, "ABCD12|STUVW|XYZ0")
AddString(hGrid&, "ABCD34|stuvw|999,00")
AddString(hGrid&, "Abcd45|STUVW|-111,11")
AddString(hGrid&, "Abcd56|StUVW|2.111,11")
AddString(hGrid&, "Abcd56|AbxVW|-15.234,56")
AddString(hGrid&, "Abcd67|STUVW|0,00")
X% = InsertString(hGrid&, 5, "Hugo")' 1. Feld hier wegen der Sortierung
SetText hGrid&, X%, 1, "war"
SetText hGrid&, X%, 2, "hier"
' 4. Gridbox-Inhalt ausgeben
WhileLoop 0, GetCount(hGrid&)-1
Print GetString$(hGrid&, &loop)
EndWhile
Print "--------------"
' 5. Strings selektieren
Print SelectString(hGrid&, -1, "Hugo")
Print SelectString(hGrid&, -1, "GHI")
Print SelectString(hGrid&, 6, "Hugo")
' 6. Gridbox wird angezeigt. Jetzt auswerten
WhileNot @Clicked(Ende%)
WaitInput
print GetCurSel(hGrid&)
If @Clicked(Anzeige%)
Print Str$(GetSelCount(hGrid&)) + "/" + Str$(GetCount(hGrid&))
' Jetzt werden die selektierten Zeilen ausgegeben
WhileLoop 0, GetCount(hGrid&)-1
X% = &Loop
If GetState(hGrid&, X%) > 0
Print GetString$(hGrid&, X%)
Feld$ = ""
WhileLoop 0, 2' 3 Spalten
Feld$ = Feld$ + GetText$(hGrid&, X%, &Loop) + " / "
EndWhile
Print Feld$
EndIf
EndWhile
Print
EndIf
EndWhile
End
Meinst Du sowas? |
| | | | |
| | funkheld | Jup, die Profanversion steht bei mir unter "Gruss", die wird glaube ich automatisch übernommen bei meiner Anmeldung.
Ja, so etwas meine ich. Danke.
Gruss |
| | | | |
| | funkheld | So, dank eurer Hilfe bin ich schon soweit gekommen. Ich kann unten Daten reinsetzen, die dann oben eingetragen werden nach dem Drücken vom Button.
Ich habe noch einige Fragen: 1. Ich möchte Buchstaben eingeben , die alle den gleiche Abstand haben 2. Wie geht das, wenn die Zeichenzahl im Feld überschritten wird, das dann in das rechts nebenstehende Feld gesprungen wird. 3. Wie kann man jetzt die Daten oben ins Fenster wieder reinladen, das Speichern funktioniert. 4. Eine Markierte Zeile löschen und die anderen sollen hochrücken.
Vielleicht zuviel Fragen ?
{$cleq}
Declare Ende&, text_setzen&,text$,printen&,win&,qsl_text$
declare edit1&,edit2&,edit3&,edit4&,edit5&,edit6&,edit7&,edit8&,edit9&
Declare hGrid&, Titel$
win& = @Create("Window", 0, "Parent", 20, 20, 1100,600)
text_setzen& = Create("Button",win&, "Text setzen", 10, 520, 90, 30)
printen& = Create("Button", win&, "Speichern", 110, 520, 80, 30)
Ende& = Create("Button", win&, "Ende", 740, 520, 80, 30)
Edit1& = @Create("Edit", win&, "", 15, 470, 70, 24)
SetStyle Edit1&, @GetStyle(Edit1&) | ~ES_UPPERCASE
SendMessage(Edit1&,$0C5,6,0)' EM_LIMITTEXT
Edit2& = @Create("Edit", win&, "", 95, 470, 70, 24)
SetStyle Edit2&, @GetStyle(Edit2&) | ~ES_UPPERCASE
SendMessage(Edit2&,$0C5,6,0)' EM_LIMITTEXT
Edit3& = @Create("Edit", win&, "", 175, 470, 70, 24)
SetStyle Edit3&, @GetStyle(Edit3&) | ~ES_UPPERCASE
SendMessage(Edit3&,$0C5,5,0)' EM_LIMITTEXT
Edit4& = @Create("Edit", win&, "", 255, 470, 70, 24)
SetStyle Edit4&, @GetStyle(Edit4&) | ~ES_UPPERCASE
SendMessage(Edit4&,$0C5,5,0)' EM_LIMITTEXT
Edit5& = @Create("Edit", win&, "", 335, 470, 50, 24)
SetStyle Edit5&, @GetStyle(Edit5&) | ~ES_UPPERCASE
SendMessage(Edit5&,$0C5,3,0)' EM_LIMITTEXT
Edit6& = @Create("Edit", win&, "", 395, 470, 50, 24)
SetStyle Edit6&, @GetStyle(Edit6&) | ~ES_UPPERCASE
SendMessage(Edit6&,$0C5,3,0)' EM_LIMITTEXT
Edit7& = @Create("Edit", win&, "", 455, 470, 70, 24)
SetStyle Edit7&, @GetStyle(Edit7&) | ~ES_UPPERCASE
SendMessage(Edit7&,$0C5,6,0)' EM_LIMITTEXT
Edit8& = @Create("Edit", win&, "", 535, 470, 60, 24)
SetStyle Edit8&, @GetStyle(Edit8&) | ~ES_UPPERCASE
SendMessage(Edit8&,$0C5,3,0)' EM_LIMITTEXT
Edit9& = @Create("Edit", win&, "", 600, 470, 455, 24)
SetStyle Edit9&, @GetStyle(Edit8&) | ~ES_UPPERCASE
SendMessage(Edit9&,$0C5,64,0)' EM_LIMITTEXT
Titel$ = "to Radio;2;80;DATE;2;80;TIME UTC;2;80;BAND KHZ;2;80;MODE;2;60;R S T;2;60;QSO WITH;2;80;YOU RST;2;60;TEXT;0;465"
hGrid& = Create("GridBox",win&, Titel$,2, 10, 10, 1050, 400)
WhileNot @Clicked(Ende&)
WaitInput
If @Clicked(printen&)
Assign #2,"d:\qsl.txt"
Rewrite #2
WhileLoop 0, GetCount(hGrid&)-1
qsl_text$=GetString$(hGrid&, &loop)
print #2,qsl_text$
EndWhile
Close #2
elseif @Clicked(text_setzen&)
text$=""
text$=@gettext$(edit1&)+"|"+@gettext$(edit2&)+"|"+@gettext$(edit3&)+"|"+@gettext$(edit4&)+"|"+@gettext$(edit5&)
text$=text$+"|"+@gettext$(edit6&)+"|"+@gettext$(edit7&)+"|"+@gettext$(edit8&)+"|"+@gettext$(edit9&)
@addstring(hgrid&,text$)
EndIf
EndWhile
End
Danke
Gruss |
| | | | |
| | Thomas Freier | Zu 1. kommen dann nur die nichtproportionale Schriftarten (Dickten-/Festbreitschrift) [...] in Frage. Kann aber nicht nachvollziehen, warum es so sein soll. Zum Rest ein Minibeispiel
cls
Declare Gesamt&,font&
declare grid&,grid1&,t$,Zeile$
declare ed%,ed1%,laden%,loeschen%
ed%=Create("Edit",%hwnd,"",20,40,100,20)
ed1%=Create("Edit",%hwnd,"",20,70,100,20)
font&=CreateFont("Lucida Console",14,0,0,0,0)'nichtproportionale Schrift
SetFont ed%,font&
t$ = "Links;0;180;Mitte;2;100;Rechts;1;80"
grid& = Create("Gridbox",%HWnd,t$,1,150,10,400,120)
AddString(grid&,"Hallo 1|Hallo 2|Hallo 3")
AddString(grid&,"Hallöchen 1|Hallöchen 2|Hallöchen 3")
AddString(grid&,"Hallo, Du 1|Hallo, Du 2|Hallo, Du 3")
grid1& = Create("Gridbox",%HWnd,t$,1,150,150,400,120)
laden%=CreateButton(%hwnd,"Laden",150,300,80,20)
loeschen%=CreateButton(%hwnd,"Löscht die markierte Zeile",300,300,250,20)
'Datei speichern mit Trenner= | . Sonst ersetzen ($=Translate$($,$,$)).
Assign #2,$TempDir +"\\TEST.DAT"
Rewrite #2
WhileLoop 0,GetCount(grid&)-1
zeile$=GetString$(grid&,&loop)
Print #2,Zeile$
Endwhile
Close #2
Setfocus(ed%)
subclass ed%,1
subclass ed1%,1
while 0=0
waitinput
If getfocus(laden%)
Assign #2,$TempDir +"\\TEST.DAT"
Reset #2
WhileNot @Eof(#2)
Input #2,Zeile$
AddString(grid1&,Zeile$)
Endwhile
Close #2
setfocus(%hwnd)
EndIf
If getfocus(loeschen%) AND (GetCurSel(grid1&)>-1)
DeleteString(grid1&,GetCurSel(grid1&))
EndIf
wend
DeleteObject font&
END
SubClassProc
If getfocus(ed%)
sendmessage(ed%,176,addr(Gesamt&),0)
If Gesamt&+sendmessage(ed%,187,-1,0)=3' weiter nach 3 Zeichen
Setfocus(ed1%)
Endif
ElseIf getfocus(ed1%)
sendmessage(ed1%,176,addr(Gesamt&),0)
If Gesamt&+sendmessage(ed1%,187,-1,0)=5' weiter nach 5 Zeichen
Setfocus(%hwnd)
Endif
EndIf
EndProc
|
| | | | |
| | | Ne fixe Variante:
{$cleq}
'URL: https://xprofan.com/intl/de/forum/swl-dx-tabelle-anfertigen/#n
Declare Ende&, text_setzen&,text$,printen&,win&,qsl_text$
declare edit1&,edit2&,edit3&,edit4&,edit5&,edit6&,edit7&,edit8&,edit9&
Declare hGrid&, Titel$,s$,s2$
win& = @Create("Window", 0, "Parent", 20, 20, 1100,600)
text_setzen& = Create("Button",win&, "Text setzen", 10, 520, 90, 30)
printen& = Create("Button", win&, "Speichern", 110, 520, 80, 30)
var ld& = Create("Button", win&, "Laden", 190, 520, 80, 30)
Ende& = Create("Button", win&, "Ende", 740, 520, 80, 30)
Edit1& = @Create("Edit", win&, "", 15, 470, 70, 24)
SetStyle Edit1&, @GetStyle(Edit1&) | ~ES_UPPERCASE
SendMessage(Edit1&,$0C5,6,0)' EM_LIMITTEXT
Edit2& = @Create("Edit", win&, "", 95, 470, 70, 24)
SetStyle Edit2&, @GetStyle(Edit2&) | ~ES_UPPERCASE
SendMessage(Edit2&,$0C5,6,0)' EM_LIMITTEXT
Edit3& = @Create("Edit", win&, "", 175, 470, 70, 24)
SetStyle Edit3&, @GetStyle(Edit3&) | ~ES_UPPERCASE
SendMessage(Edit3&,$0C5,5,0)' EM_LIMITTEXT
Edit4& = @Create("Edit", win&, "", 255, 470, 70, 24)
SetStyle Edit4&, @GetStyle(Edit4&) | ~ES_UPPERCASE
SendMessage(Edit4&,$0C5,5,0)' EM_LIMITTEXT
Edit5& = @Create("Edit", win&, "", 335, 470, 50, 24)
SetStyle Edit5&, @GetStyle(Edit5&) | ~ES_UPPERCASE
SendMessage(Edit5&,$0C5,3,0)' EM_LIMITTEXT
Edit6& = @Create("Edit", win&, "", 395, 470, 50, 24)
SetStyle Edit6&, @GetStyle(Edit6&) | ~ES_UPPERCASE
SendMessage(Edit6&,$0C5,3,0)' EM_LIMITTEXT
Edit7& = @Create("Edit", win&, "", 455, 470, 70, 24)
SetStyle Edit7&, @GetStyle(Edit7&) | ~ES_UPPERCASE
SendMessage(Edit7&,$0C5,6,0)' EM_LIMITTEXT
Edit8& = @Create("Edit", win&, "", 535, 470, 60, 24)
SetStyle Edit8&, @GetStyle(Edit8&) | ~ES_UPPERCASE
SendMessage(Edit8&,$0C5,3,0)' EM_LIMITTEXT
Edit9& = @Create("Edit", win&, "", 600, 470, 455, 24)
SetStyle Edit9&, @GetStyle(Edit8&) | ~ES_UPPERCASE
SendMessage(Edit9&,$0C5,64,0)' EM_LIMITTEXT
Titel$ = "to Radio;2;80;DATE;2;80;TIME UTC;2;80;BAND KHZ;2;80;MODE;2;60;R S T;2;60;QSO WITH;2;80;YOU RST;2;60;TEXT;0;465"
hGrid& = Create("GridBox",win&, Titel$,2, 10, 10, 1050, 400)
var fnt&=create("Font","Courier New",16,0,0,0,0)
var fnt2&=create("Font","MS Sans Serif",12,0,0,0,0)
setFont hGrid&,fnt&
setFont edit1&,fnt&
setFont edit2&,fnt&
setFont edit3&,fnt&
setFont edit4&,fnt&
setFont edit5&,fnt&
setFont edit6&,fnt&
setFont edit7&,fnt&
setFont edit8&,fnt&
setFont edit9&,fnt&
setFont printen&,fnt2&
setFont ld&,fnt2&
setFont ende&,fnt2&
setFont text_setzen&,fnt2&
usermessages 16//wm_close
setfocus(edit1&)
subclass edit1&,1
subclass edit2&,1
subclass edit3&,1
subclass edit4&,1
subclass edit5&,1
subclass edit6&,1
subclass edit7&,1
subclass edit8&,1
subclass edit9&,1
WhileNot @Clicked(Ende&)
WaitInput
select %uMessage
caseof 16 : break
endSelect
If @Clicked(printen&)
Assign #2,"c:\\qsl.txt"
Rewrite #2
WhileLoop 0, GetCount(hGrid&)-1
qsl_text$=GetString$(hGrid&, &loop)
print #2,qsl_text$
EndWhile
Close #2
assign #2,""'handle wieder freigeben!
elseif @Clicked(ld&)
clearlist hGrid&
Assign #2,"c:\\qsl.txt"
reset #2
whilenot eof(#2)
input #2,s$
addstring(hGrid&,s$)
wend
Close #2
assign #2,""'handle wieder freigeben!
elseif @Clicked(text_setzen&)
text$=""
text$=@gettext$(edit1&)+"|"+@gettext$(edit2&)+"|"+@gettext$(edit3&)+"|"+@gettext$(edit4&)+"|"+@gettext$(edit5&)
text$=text$+"|"+@gettext$(edit6&)+"|"+@gettext$(edit7&)+"|"+@gettext$(edit8&)+"|"+@gettext$(edit9&)
@addstring(hgrid&,text$)
EndIf
EndWhile
End
subclassproc
someproc(edit1&,edit2&,6)
someproc(edit2&,edit3&,6)
someproc(edit3&,edit4&,5)
someproc(edit4&,edit5&,5)
someproc(edit5&,edit6&,3)
someproc(edit6&,edit7&,3)
someproc(edit7&,edit8&,6)
someproc(edit8&,edit9&,3)
endproc
proc someproc
parameters a&,b&,c&
if subclassmessage(a&,257)//wm_keyup
case len(gettext$(a&))=c& : setfocus(b&)
endif
endproc
|
| | | | |
| | funkheld |
Kann aber nicht nachvollziehen, warum es so sein soll.
Weil ich die Spalten für eine bestimmte Anzahl vorgesehen habe und wenn ich jetzt ein "Q" und ein "I" eingebe, kommt die Spaltenlänge nicht mehr hin.
Danke für das gute Programm.
Danke.
gruss |
| | | | |
|
AntwortenThemenoptionen | 9.068 Betrachtungen |
ThemeninformationenDieses Thema hat 3 Teilnehmer: |