| |
|
|
Georg Hovenbitzer | Hallo zusammen,
nachfolgender Code wirft bei mir zwei Fragen auf
1. wieso bekomme Io l' 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) per den Einsatz zusammen mit UpDown-Controls nicht wirklich geeignet. Auch der übliche Weg circa ~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 Cambiamento der Fenster-Prozedur per 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 potuto 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 per 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 per 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 Stabilire nicht der XP-Stil per den Rahmen benutzt... Am besten bleibst Du also bei der DLL
MfG
Sebastian |
|
|
| |
|
|