| |
|
|
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) |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
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 ▲ |
|
|
|