Forum | | | | Rainer Hoefs | Halo zusammen,
ich suche nach Messages mit denen man bei einem SpinEdit, je nach Situation, die Min-, Start- und/oder Endwerte verändern kann.
Für jede Hilfe dankbar,
Gruß
Rainer |
| | | | |
| | H.Brill | vielleicht hilft dir das weiter : [...] |
| | | 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. | 28.06.2015 ▲ |
| |
| | Rainer Hoefs | Hallo,
vielen Dank, aber funktioniert bei mir nicht, ich habe das SpinEdit mit create("SpinEdit",... erstellt.
MfG Rainer |
| | | | |
| | RGH | Ab Version X3 stelle ich das Spinedit auf die neue Form um, da die bisherige Variante von Microsoft als "veraltet" bezeichnet wird. Dann werden diese Messages funktionieren.
Das bisherige SpinEdit ist mit der API "createUpDownControl" erzeugt worden. Wenn Du danach suchst, solltest Du auch die dafür passenden Messages finden. Auf die Shcnelle in meinem "schlauen Buch"* für Steuerelemente gefunden:
Die Messages fangen mit UDM_ an. UDM_SETPOS stellt den Startwert ein. WPARAM hat 0 und in LPARAM steht der Wert. UDM_SETRANGE stellt den Bereich ein. WPARAM hat 0 und LoWord von LPARAM steht der maximale Wert, in HiWord(LPARAM) der Minimalwert (jeweils 16 Bit). UDM_SETBASE setzt die Basis auf WPARAM, welches 10 (dezimal) oder 16 (hexadezimal) sein kann.
Gruß Roland
* Richard J. Simon, Windows 95/NT API Bible, Band 2: Steuerelemente & Nachrichten, SAMS 1996, 129,00 DM |
| | | 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 | 28.06.2015 ▲ |
| |
| | | Bei sowas kann auch Konstantinopel immer gut helfen: [...]
|
| | | | |
| | RGH | BTW: Was mir das alte Buch verheimlichte: Es gibt auch UDM_SETRANGE32, wo die Werte in WPARAM und LPARAM stehen.
Wenn Du mit $H commctrl.ph die passende Header-Datei nutzt, sin die Messages bekannt und können wie gewohnt genutzt werden, etwa:
SendMessage(hMeinControl, ~UDM_SETRANGE32, 10, 70)
Gruß Roland |
| | | XProfan X2Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 28.06.2015 ▲ |
| |
| | Rainer Hoefs | Hallo Roland,
funktioniert auch nicht!
MfG Rainer
$H windows.ph
$H messages.ph
$H commctrl.ph
Def sEditNum(1) External("USER32","SetWindowLongA",&(1),-16,(External("USER32","GetWindowLongA",&(1),-16) | $2000))
cls
Proc Dialog3
Declare Db%, Feldname%, FeldLaenge&, DezimalStellen%, FeldTyp%, Speichern%, NeuesFeld%, FeldLoeschen%, Next%, Previous%
Declare ExitDialog%, ErstelleDB%, DbFeldliste%, ListString$, FeldTyp$, DBName%
Db% = Create("Dialog",Db%,"Datenbank Felder definieren", 180,70,818,260)
Var text0% = Create("Text", Db%, "Datenbankname", 24, 16, 184, 16)
DBname% = Create("Edit", Db%, "Datenbankname", 24, 40, 184, 24)
Var text1% = Create("Text", Db%, "Feldname", 224, 16, 184, 16)
Feldname% = Create("Edit", Db%, "Feldname", 224, 40, 184, 24)
SendMessage(Feldname%,$00C5,10,0)
Var text3% = Create("Text", Db%, "Feldtyp", 424, 16, 160, 16)
FeldTyp% = Create("ChoiceBox", Db%, 0, 424, 40, 160, 116)
AddString(FeldTyp%,"C = Alphanumerisch")
AddString(FeldTyp%,"N = Numerisch")
AddString(FeldTyp%,"D = Datum")
AddString(FeldTyp%,"L = Logisch (J/N)")
AddString(FeldTyp%,"M = Memofeld")
SelectString(FeldTyp%,-1,"C =")
Var text2% = Create("Text", Db%, "Feldlänge", 600, 16, 96, 16)
Feldlaenge& =Create("SpinEdit", Db%,"1;1;1", 600, 40, 76, 24)
SEditNum(FeldLaenge&)
Var text4% = Create("Text", Db%, "Dezimalstellen", 692, 16, 126, 16)
Dezimalstellen% = Create("SpinEdit", Db%, "0;0;2", 692, 40, 96, 24)
SEditNum(DezimalStellen%)
Speichern% = Create("Button", Db%, "*.STR speichern", 495, 80, 121, 24)
NeuesFeld% = Create("Button", Db%, "Feld anhängen", 168, 80, 112, 24)
FeldLoeschen% = Create("Button", Db%, "Feld löschen", 332, 80, 111, 24)
ExitDialog% = Create("Button", Db%, "Beenden", 24, 80, 92, 24)
ErstelleDb% = Create("Button", Db%, "*.DBF erstellen", 668, 80, 122, 24)
DbFeldListe% = Create("ListBox", Db%, 0, 24, 114, 764, 100)
EnableWindow FeldLaenge&,1
SetText FeldLaenge&,"0"
EnableWindow DezimalStellen%,0
SetText DezimalStellen%,"0"
Declare I%
I% = 0
UserMessages 16
Declare DialogEnde%
DialogEnde% = 0
WhileNot DialogEnde% = 1
WaitInput
Case %umessage = 16 : BREAK
If Clicked(Feldname%)
ElseIf Clicked(FeldTyp%)
Feldtyp$ = Left$(GetText$(FeldTyp%),1)
Select FeldTyp$
CaseOf "C"
EnableWindow FeldLaenge&,1
'**************************************************************************************
' Hier soll der Max-Wert auf 254 wegen C-Feld gesetzt werden!
'**************************************************************************************
SendMessage(FeldLaenge&, ~UDM_SETRANGE32, 1, 254)
SetText FeldLaenge&,"1"
EnableWindow DezimalStellen%,0
SetText DezimalStellen%,"0"
CaseOf "N"
'**************************************************************************************
' Hier soll der Max-Wert auf 19 wegen N-Feld gesetzt werden!
'**************************************************************************************
SendMessage(FeldLaenge&, ~UDM_SETRANGE32, 1, 19)
EnableWindow FeldLaenge&,1
SetText FeldLaenge&,"1"
EnableWindow DezimalStellen%,1
SetText DezimalStellen%,"0"
CaseOf "D"
SetText DezimalStellen%,"0"
EnableWindow DezimalStellen%,0
SetText FeldLaenge&,"8"
EnableWindow FeldLaenge&,0
CaseOf "L"
SetText DezimalStellen%,"0"
EnableWindow DezimalStellen%,0
SetText FeldLaenge&,"1"
EnableWindow FeldLaenge&,0
CaseOf "M"
SetText DezimalStellen%,"0"
EnableWindow DezimalStellen%,0
SetText FeldLaenge&,"10"
EnableWindow FeldLaenge&,0
EndSelect
ElseIf Clicked(FeldLaenge&)
ElseIf Clicked(Dezimalstellen%)
ElseIf Clicked(Speichern%)
ElseIf Clicked(NeuesFeld%)
ListString$ = Upper$(GetText$(Feldname%))+";"+Upper$(Left$( GetText$(FeldTyp%);1))+";"+GetText$( FeldLaenge&)+";"+GetText$(DezimalStellen%)
If SelectString(DbFeldListe%,-1,Upper$(GetText$(Feldname%))) > -1
MessageBox("Feld besteht bereits!\r\rBitte Felddaten korrigieren!","Fehler bei Felddefinition!",64)
SetFocus(Feldname%)
Else
AddString(DbFeldListe%,ListString$)
SelectString(DbFeldListe%,-1,ListString$)
EndIf
ElseIf Clicked(FeldLoeschen%)
ElseIf Clicked(Next%)
ElseIf Clicked(Previous%)
ElseIf Clicked(ExitDialog%)
DialogEnde% = 1
ElseIf Clicked(ErstelleDB%)
ElseIf Clicked(DbFeldliste%)
EndIf
EndWhile
DestroyWindow(Db%)
EndProc
Dialog3
End
|
| | | | |
| | RGH | Möglicherweise kann man bei dem Control diese Werte nicht nachträglich ändern. Dann hilft nur eins: Control mit DestroyWindow() löschen und mit den neuen Werten neu erstellen.
Gruß Roland |
| | | XProfan X2Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 28.06.2015 ▲ |
| |
| | Rainer Hoefs | Hallo Roland,
das habe ich auch schon erfolglos probiert!
MfG Rainer |
| | | | |
| | RGH | Sorry, mein Fehler:
Das Handle von SpinEdit ist ja zunächst das Handle des Edit-Feldes und nicht das Handle des UpDown-Controls! Da die ItemId des UpDown-Controls exakt 1 höher ist, als das des Edit-Feldes davor, kann man so dessen Handle ermitteln und mit den oben erwähnten Messages auch tatsächlich im laufenden Programm ändern:
var hEdit& = Create("SpinEdit", %hWnd, "60; -100; 100", 8, 56, 80, 20)
var hSpin& = GetHandle(%hWnd, ItemId(hEdit&) + 1)
SendMessage(hSpin&,$467,0,95)' 95 = Ausgangszahl
SendMessage(hSpin&,$46f,40,1440)' 40 bis 1440 = Mini-und Maximalwert
Um das komplette Spinedit zu löschen, muss man beide mit DestroyWindow() entfernen.
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 | 28.06.2015 ▲ |
| |
| | Rainer Hoefs | Danke Roland, jetzt funktioniert es.
MfG RAiner |
| | | | |
|
AntwortenThemenoptionen | 6.450 Betrachtungen |
ThemeninformationenDieses Thema hat 4 Teilnehmer: |