Deutsch
Forum

SWL-DX-Tabelle anfertigen

 

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


70 kB
Hochgeladen:25.05.2012
Ladeanzahl100
Herunterladen
 
25.05.2012  
 



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!
 
25.05.2012  
 




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
 
25.05.2012  
 



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?
 
25.05.2012  
 




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
 
25.05.2012  
 




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

63 kB
Hochgeladen:26.05.2012
Ladeanzahl98
Herunterladen
 
26.05.2012  
 




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

 
Gruß Thomas
Windows XP SP2, XProfan X2
26.05.2012  
 



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

 
26.05.2012  
 




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
 
26.05.2012  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

9.068 Betrachtungen

Unbenanntvor 0 min.
PETER195611.02.2021
Peter Max Müller09.12.2017
rquindt28.08.2015
iF28.11.2014
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

funkheld (5x)
iF (3x)
Thomas Freier (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie