Deutsch
Forum

Spaltenbreite aus Gridbox auslesen

 

Joerg
Hallo liebe XProfaner,

lassen sich die Spaltenbreiten einer Gridbox auslesen? Ich möchte diese gerne beim Verlassen des Programms sichern...

Danke und viele Grüße!!
Jörg

(XProfan X3.1/Win10 x64)
 
28.06.2016  
 




Georg
Teles
Nabend

Hmm Sendmessage habe ich noch nie so verwendet, aber so funktionierts auf jeden Fall
'~LVM_GETCOLUMNWIDTH
'1. Parameter: Index der Spalte
'2. Parameter: muss 0 sein !
 $H commctrl.ph
CLS
declare grid&
grid& = Create("gridbox",%HWnd,"eins;0;50;zwei;1;75;drei;2;100",0,5,50,400,200)
addstring(grid&,"11|22|33")

while 1

    waitinput
    locate 0,0
    print "1. Spalte: "+Str$(SendMessage(grid&,~LVM_GETCOLUMNWIDTH,0,0))+" Pixel           "
    print "2. Spalte: "+Str$(SendMessage(grid&,~LVM_GETCOLUMNWIDTH,1,0))+" Pixel           "
    print "3. Spalte: "+Str$(SendMessage(grid&,~LVM_GETCOLUMNWIDTH,2,0))+" Pixel           "

endwhile

waitinput

Servus
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

28.06.2016  
 




Joerg
Hallo Georg,

das ist prima, vielen Dank! Sollte mich vielleicht auch mal mit den Headerdateien beschäftigen... Kannst Du eine verständliche Einführung in das Thema empfehlen? In der XProfan Hilfe wird das ja nur kurz beschrieben...

Nochmals danke!
Gruß Jörg
 
29.06.2016  
 




Georg
Teles
Gern geschehen --- Einführungstechnisch würde ich Dir Listview.DLL von Frank empfehlen, leider finde ich die DLL im Forum gerade nicht, weiss ebenfalls nicht welche Version die letzte ist, habe sie nie genutzt, habe sie aber in meinem Archiv irgendwo, muss mal danach suchen ...

sonst gibt es hier die Header Datei  [...]  oder Du arbeitest Dich direkt hier durch  [...] 

Grüße
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

29.06.2016  
 




RGH
Da die Messages ja nicht Teil einer Programmiersprache sind, sondern Teil der Windows-API, findet man viele Informationen bei Microsoft selber, allerdings meist in Englisch.
Mir hat beim Entwickeln von XProfan folgendes deutsche Buch sehr geholfen:

Richard J. Simon, Windows 95/Windows NT API Bible, Band 2: Steuerelemente & Nachrichten, SAMS 1996

Das 1088 Seiten starke Werk hat damals 129 DM (ca. 66€) gekostet und ist mit etwas Glück noch gebraucht erhältlich. Es hat ein sehr übersichtliches Inhaltsverzeichnis und ein sehr gutes Register. Alle Messages werden ausführlichst, teils mit Beispielen in C, beschrieben. Zu jeder Gruppe von Steuerelementen gibt es zunächst eine Einführung und Übersicht.

(Band 1 ist auch empfehlenswert: Win 32 Programmierung.)

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
29.06.2016  
 




Joerg
...herzlichen Dank für Eure Tipps! Das ist reichlich Stoff! Frank bietet die DLL zum Download auf seiner Webseite an. Das angesprochene Buch habe ich tatsächlich noch gefunden. Das leiste ich mir als leicht verdauliche Urlaubslektüre

Viele Grüße!
Jörg
 
30.06.2016  
 




H.Brill
Ab XProfanX2 brauchst du eigentlich gar keine
Include oder .ph für die Listview.dll. Höchstens
für die paar selbst definierten Funktionen in der
.inc. Ab X2 ist ImportDll() dein Feund.

Beispiel :
Declare Handle dll, grid, btn1, btn2, btn3
Declare String TArray[], datei, sp1, sp2, sp3, eintrag
Declare Int ende, offset
Declare Memory bereich
Declare dll&
Dim bereich, 12' für 3 Stringadressen
dll  = ImportDll($ProgDir + "Listview.dll", "")
UserMessages $10
sp1 = "Name"
sp2 = "Ort"
sp3 = "Telefon"
ende = 0
datei = $ProgDir + "\Adressen.csv"
WindowTitle "Adressen"
Window 600, 400
btn1 = @Create("Button", %HWnd, "Lade", 10, 10, 60, 25)
btn2 = @Create("Button", %HWnd, "Speichere", 80, 10, 80, 25)
btn3 = @Create("Button", %HWnd, "Clear",    170, 10, 80, 25)
grid  = CreateListview(%HWnd, %HInstance, 0, $ffffff, -1, $31)
IColumn(grid, sp1, 100, 0)
IColumn(grid, sp2, 320, 0)
IColumn(grid, sp3, 100, 2)
InitMessages(%HWnd)
EnableEdits(grid, 1 + 8)
InsertItems()
ShowListview(grid, 10, 80, 530, 200)

WhileNot ende

    WaitInput

    If @Clicked(btn1)

        Lade()

    ElseIf @Clicked(btn2)

        Speichere()

    ElseIf @Clicked(btn3)

        ClearList grid

    EndIf

    If %UMessage = $10

        ende = 1

    EndIf

EndWhile

FreeDll dll
Dispose bereich
End

Proc Lade

    Declare Int bytes1, bytes2
    Declare String Header

    If FileExists(datei)

        ClearList 0
        Move("FileToList", datei)
        Header = GetString$(0, 0)' Hier hast du die Headerzeile
        DeleteString(0, 0)
        ClearList grid
        Move("ListToHandle", grid)

    Else

        Speichere()

    EndIf

EndProc

Proc Speichere

    Declare Memory bereich1
    Dim bereich1, 256
    Declare Int bytes1, bytes2, anzahlColumns
    Declare String Header
    anzahlColumns = GetColumns(grid)

    WhileLoop 0, anzahlColumns - 1

        Clear bereich1
        GetColumnName(grid, bereich1, &LOOP)

        If &LOOP < (anzahlColumns - 1)

            Header = Header + String$(bereich1, 0) + ","

        ElseIf &LOOP = (anzahlColumns - 1)

            Header = Header + String$(bereich1, 0)

        EndIf

    EndWhile

    ClearList 0
    AddString(0, Header)
    Move("HandleToList", grid)
    Move("ListToFile", datei)
    Messagebox(datei + " gespeichert", "Info", 0)
    Dispose bereich1

EndProc

Proc InsertItems

    Clear bereich
    Move("StringAdressenToMem", "Maier,Hamburg,4711", ",", bereich)
    SItem(grid, bereich, 3)
    Clear bereich
    Move("StringAdressenToMem", "Schmidt,Köln,4712", ",", bereich)
    SItem(grid, bereich, 3)
    Clear bereich
    Move("StringAdressenToMem", "Klein,Frankfurt,4713", ",", bereich)
    SItem(grid, bereich, 3)
    Clear bereich
    Move("StringAdressenToMem", "Müller,Berlin,4714", ",", bereich)
    SItem(grid, bereich, 3)
    Move("StringAdressenToMem", "Blaubär,Düsseldorf,4715", ",", bereich)
    SItem(grid, bereich, 3)

EndProc

SUBPROC Move.StringAdressenToMem

    Parameters String s, String d, Memory B
    Declare Long anzahl
    Dim$ 0
    ClearList 0
    Clear B, TArray[]
    anzahl = Move("StrToList", s, d)
    anzahl = Move("ListToArr", TArray[])
    Var Int z = 0

    WhileLoop 0, anzahl - 1

        Long B, z = Addr(TArray[&LOOP])
        Inc z, 4

    EndWhile

    Return anzahl

ENDPROC

 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
30.06.2016  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

8.569 Betrachtungen

Unbenanntvor 0 min.
Axel Berse26.08.2021
iF31.10.2020
rquindt30.04.2018
Georg Teles23.04.2017
Mehr...

Themeninformationen



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