[delphi] Tekenen over de rand van een TEdit

Pagina: 1
Acties:

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 15-05 14:44

_Thanatos_

Ja, en kaal

Topicstarter
In navolging op dit topic kunnen jullie dus gelijk aanvalluh :)

Ik heb een Edit gemaakt met een knoppie erin (een speciale spinedit in mijn geval). Op zich ziet het er allemaal prima uit. Maar nu komen de XP themes weer om de hoek kijken, want daarin dienen de knoppen van een spinedit op 1 pixel van rechts, boven en onder getekend te worden. Prima, doen we...

En toen kwam mijn probleem om de hoek kijken, want op het moment dat je over de rand - die 2 pixels breed is - heen tekent, tekent hij eigenlijk "eronder door". Ik ben erachter gekomen dat de rand niet later er nog een keer overheen getekent wordt, want direct na het tekenen van de knopjes met de ThemeServices staat onmiddelijk de rand er weer overheen. Ik heb ook wat nader onderzoek gedaan (met al het gevleuk van dien :+):
  • Het is ook geen clipping van de device context, omdat als ik die opvraag, dan is die 0.
  • Ook maakt het gebruik van WM_PAINT of WM_NCPAINT geen verschil.
  • "inherited" call in de paint handler weglaten haalt ook niets uit.
  • Ook overriden van GetClientRect en dan op "Rect(0, 0, Width, Height)" zetten, maakt niets uit.
De BorderStyle op bsNone zetten doe ik liever niet, dat is niet zo netjes, en moet ik weer met EM_SETRECT gaan zitten mieren. Als ik zometeen thuis ben kan ik wel ff wat screenshotjes posten, als dat gewenst is.

日本!🎌


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 26-05 11:18

alienfruit

the alien you never expected

Hmm. Kijk er straks naar eerst Enterprise kijken _/-\o_
Heb het er wel eens over gehad met Mike Lichske (de ThemeServices god in Delphi-land :+)

[ Voor 45% gewijzigd door alienfruit op 14-01-2004 20:02 ]


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 15-05 14:44

_Thanatos_

Ja, en kaal

Topicstarter
Ik ken em ja (niet persoonlijk), maar als Borland zijn ThemeServices in D7 adopteerd, kun je het wel een god noemen ja :P

日本!🎌


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 07:34

Tomatoman

Fulltime prutser

Volgens mij is het niet zo verstandig om in het non-clientgebied van een control te tekenen. Dat is het domein van Windows en het is een beetje link om daar zelf in te gaan zitten tekenen.

Mocht je een product van Developer Express hebben, dan kun je in de source kijken hoe ze daar het tekenwerk doen bij spin edits en dergelijke. Die hebben allemaal een nette XP-look, veel beter dan TSpinEdit in de VCL.

Een goede grap mag vrienden kosten.


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 15-05 14:44

_Thanatos_

Ja, en kaal

Topicstarter
Ik heb geen devexpress producten hier... Maar ik ben het verder wel met je eens, tomatoman, dat windows de border maar voor me moet tekenen. Maar die border is in een gethemede XP 1 pixel breed, en in de orginele spinedit in bijv display properties, worden de knopjes tegen die 1 pixel rand aan getekend. Iets dat delphi blijkbaar niet toelaat, ookal is het noodzakelijk.

De "hoe" vraag ligt er dus nog steeds...

日本!🎌