| |
|
|
Georg Hovenbitzer | Hallo zusammen,
nachfolgender Code wirft bei mir zwei Fragen auf
1. wieso bekomme ich den Text im Control was mit der DLL erstellt wurde nicht mittig, auch nicht mit geändertem Style ? 2. wieso zieht sich der Rand nicht bis zum Spin durch, so wie bei dem normal erstelltem Control, sondern hört nach dem Edit auf ?
$I SKControl.inc
$H Windows.ph
$H Messages.ph
Def GetSysColor(1) !USER32.DLL,GetSysColor
Def CreateSpinED(12) !COMCTL32.Dll,CreateUpDownControl
Declare SKDLL&
Declare Font&, Test1&, Test2&, Test3&, Test4&
SKDLL& = @UseDLL(SKControl.dll)
WindowStyle 2 + 8 + 16 + 128 + 256 + 512
Window 0,0-800,600
Cls GetSysColor($0F)
SKCtrl_InitDll()
Font& = @Create(Font,Arinal Narrow,14,0,1,0,0)
Test1& = SKCtrl_CreateColorEdit(%hWnd,,@RGB(0,0,0),@RGB(255,255,255),50,100,114,18,%hInstance)
Test2& = CreateSpinED($500000A6,0,0,0,0,%hWnd,80,%hInstance,Test1&,2020,1920,2007)
SetStyle Test1&,(@GetStyle(Test1&) + $1)
SetFont Test1&,Font&
Test3& = @Control(EDIT,,$540100C1,50,125,114,18,%hWnd,1070,%hInstance,$200)
Test4& = CreateSpinED($500000A6,0,0,0,0,%hWnd,80,%hInstance,Test3&,2020,1920,2007)
SetFont Test3&,Font&
WhileNot %Key = 2
WaitInput
EndWhile
DeleteObject Font&
SKCtrl_DeInitDll()
End
|
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 16.04.2007 ▲ |
|
|
|
|
Sebastian König | Hallo Georg,
ich fürchte, die ColorEdits sind durch ihren internen Aufbau (normales Edit auf unsichtbarem Elternfenster) für den Einsatz zusammen mit UpDown-Controls nicht wirklich geeignet. Auch der übliche Weg über ~GetWindow(handle&,~GW_CHILD) funktioniert leider nicht... Ich versuche mal herauszufinden, was genau so ein UpDown-Control beim Erstellen mit dem angegebenen Edit so alles anstellt und gucke, ob es sich vielleicht durch eine Änderung der Fenster-Prozedur für die ColorEdits kompensieren lässt. Versprechen kann ich aber leider nichts...
MfG
Sebastian |
|
|
| |
|
|
|
Georg Hovenbitzer | Hallo Sebastian,
wenn du mit dem Zusammenspiel meinst, dass der Rahmen auch um den Spin geht, ist dies nicht so wichtig. Interessant wäre, wieso der ES_CENTER Style nicht funktioniert, auch nicht auf dem Child Handle. |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 16.04.2007 ▲ |
|
|
|
|
| Nicht jedermanns Lösung - aber in Okrea z.B. habe ich (wie auch viele andere Controls) selbst erzeugt - es sieht quasi aus als ob... 2 PictureStatics neben dem Edit. |
|
|
| |
|
|
|
Georg Hovenbitzer | Hallo if,
um da durchzusteigen, bräuchte ich mal ein Demo
Man könnte es aber auch so machen:
$H D:PrivatProfanXProfan10INCLUDEWindows.ph
$H D:PrivatProfanXProfan10INCLUDEMessages.ph
$H D:PrivatProfanXProfan10INCLUDEichedit.ph
Def GetSysColor(1) !USER32.DLL,GetSysColor
Def CreateSpinED(12) !COMCTL32.Dll,CreateUpDownControl
Declare RichDLL&
Declare Font&, Test1&, Test2&
RichDLL& = @UseDLL(RICHED32.DLL)
WindowStyle 2 + 8 + 16 + 128 + 256 + 512
Window 0,0-800,600
Cls GetSysColor(~COLOR_BTNFACE)
Font& = @Create(Font,Arinal Narrow,14,0,1,0,0)
Test1& = @Control(RichEdit,,$54010001,170,125,114,18,%hWnd,10,%hInstance,$0)
SetFont Test1&,Font&
Test2& = CreateSpinED($500000A6,0,0,0,0,%hWnd,20,%hInstance,Test1&,2020,1920,2007)
@SendMessage(Test1&,~em_SetBkGndColor,0,@RGB(213,214,145))
WhileNot %Key = 2
WaitInput
EndWhile
DeleteObject Font&
@DestroyWindow(Test1&)
FreeDLL RichDLL&
End
Bei der Lösung gefällt mir nicht, dass der Text immer am oberen Rand hängt und einen Rahmen bekommt man auch nicht hin. |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 17.04.2007 ▲ |
|
|
|
|
Sebastian König | Hallo Georg,
Georg Hovenbitzer
wenn du mit dem Zusammenspiel meinst, dass der Rahmen auch um den Spin geht, ist dies nicht so wichtig. Interessant wäre, wieso der ES_CENTER Style nicht funktioniert, auch nicht auf dem Child Handle.
Ok, das konnte ich jetzt lösen Wie es aussieht, müssen die Stile für die Textausrichtung immer schon beim Erstellen angegeben werden und können nachträglich nicht mehr geändert wären. Als Ausweg bleibt nur, das Edit mit geändertem Stil neu zu erstelle. Bei den ColorEdits ist das zum Glück kein Problem - hier muss ja nur das interne normale Edit neu erststellt werden.
Im Anhang findest Du eine neue Version der DLL (1.22.04). Damit reagieren die ColorEdits nun auf SKCtrl_SetAlignment, sodass Du mit
SKCtrl_SetAlignment(Test1&,2)
den zentrierten Text einstellen kannst.
MfG
Sebastian |
|
|
| |
|
|
|
Frank Abbing |
Wie es aussieht, müssen die Stile für die Textausrichtung immer schon beim Erstellen angegeben werden und können nachträglich nicht mehr geändert wären.
Bei vielen Controlstyles/Controls muss dazu nur die Grösse des Controls kurzzeitig geändert werden. Habs hier in dem Fall aber nicht getestet. |
|
|
| |
|
|
|
Sebastian König |
Bei vielen Controlstyles/Controls muss dazu nur die Grösse des Controls kurzzeitig geändert werden. Habs hier in dem Fall aber nicht getestet.
Ja, das war auch mein erster Gedanke . Hat aber leider nicht funktioniert.... |
|
|
| |
|
|
|
Georg Hovenbitzer | Hallo Sebastian,
es klappt sehr gut mit der neuen DLL. Die Lösung mit der DLL ist zur Zeit die beste, da hier bis auf dem Rand alles klappt. Seltsam ist nur, dass auch beim RichEdit das Problem mit dem Rand gibt. Ich bekomme einfach nicht heraus welcher Style dafür zuständig ist. |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 18.04.2007 ▲ |
|
|
|
|
Sebastian König | Hallo Georg,
Georg Hovenbitzer
Seltsam ist nur, dass auch beim RichEdit das Problem mit dem Rand gibt. Ich bekomme einfach nicht heraus welcher Style dafür zuständig ist.
einen Rahmen bekommst Du, wenn Du an Control() als letzten Parameter ~WS_EX_CLIENTEDGE übergibst. Allerdings wird dann aus irgendwelchen Gründen nicht der XP-Stil für den Rahmen benutzt... Am besten bleibst Du also bei der DLL
MfG
Sebastian |
|
|
| |
|
|