Autor Téma: Použitý skin nevykresľuje komponenty  (Přečteno 132 krát)

Offline Slavomir

  • Nováček
  • *
  • Příspěvků: 45
  • Karma: 0
    • RQ Money
Použitý skin nevykresľuje komponenty
« kdy: 05-12-2017, 20:23:06 »
Ahojte, prosím o radu. V mojom programe (v Delphi XE2) sa pokúšam použiť ľubovoľný skin (ono sa to síce v Delphi volá Style - napr. Smokey Quartz Kamri).
Spustím z menu Project / Options / Appearance - zaškrtnem daný štýl, nastavím ho ako default a uložím. Ale bieda.
Po spustení programu väčšina jednoduchý okien má daný štýl bez chyby, ale tie komplikovanejšie (s viacerými komponentami) sa neprekresľujú takmer vôbec (viď priložený obrázok).

Sú v ňom vlastne tri náhľady:
1) vľavo - štýl použitý, po zobrazení okna nikde žiadny komponent
2) v strede - štýl použitý, po prejdení myšou ponad komponenty sa niektoré zobrazia
3) vpravo - okno bez štýlu (klasický Windows - síce škaredý, ale je tam všetko)  :).
Budem vďačný za každú radu.

Delphi XE2, RQ Money

Offline Delfin

  • Hrdina
  • ****
  • Příspěvků: 431
  • Karma: 21
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Použitý skin nevykresľuje komponenty
« Odpověď #1 kdy: 05-12-2017, 20:27:30 »
Co se tyce vertikalniho page control, tak si pamatuju, ze nebyly skinovane ani bez VCL Styles.
« Poslední změna: 05-12-2017, 20:29:06 od Delfin »
A co chudinky ovce? Koupíš jim snad plovací vesty? Nebo jim nasadíš chůdy? Ještě lepší, kdybys je zkřížil s delfíny na ovce hopkavé!

Offline Slavomir

  • Nováček
  • *
  • Příspěvků: 45
  • Karma: 0
    • RQ Money
Re:Použitý skin nevykresľuje komponenty
« Odpověď #2 kdy: 06-12-2017, 07:12:06 »
Celý panel FILTER, ktorý je na obrázku, sa skladá väčšinou len z komponent TPanel, TLabel, TCombobox a prípadne TBitButton. Iba dátum má komponent TPageControl. Keby sa neprekresľoval iba tento komponent, viem to pochopiť. Ale tam sa po spustení programu nezobrazuje nič!  >:(
Ďalší komponent TPageControl, ktorého časť je na obrázku vpravo, nemá nič spoločné s panelom FILTER (súvisí s vedľajšou tabuľkou, ktorú nie je vidno).
Delphi XE2, RQ Money

Offline JaroB

  • Guru
  • *****
  • Příspěvků: 820
  • Karma: 20
    • Verze Delphi: D2007, XE2, XE6
Re:Použitý skin nevykresľuje komponenty
« Odpověď #3 kdy: 06-12-2017, 07:23:30 »
Pro XE2 je vhodné k úpravě stylů použít úpravy dle Rodriga Ruze, opravuje různé drobnosti v zobrazení a v podstatě stačí tuto knihovnu dát do cesty překladači - ale je vhodné na unity explicitně ukázat v projektu v uses, např.

Kód: Delphi [Vybrat]
  1.   Vcl.Styles.Utils.SysControls in '..\Styles\Vcl.Styles.Utils.SysControls.pas',
  2.   Vcl.Styles.Utils.SysStyleHook in '..\Styles\Vcl.Styles.Utils.SysStyleHook.pas',
  3.   Vcl.Styles.Utils.Menus in '..\Styles\Vcl.Styles.Utils.Menus.pas',
  4.  

já to používal hlavně kvůli menu.
A pravidlo, pokud je použit nějaký page control, je potřeba každý sheet podložit na celou plochu panelem a vypnou u něj backgroundparent (s vědomím, že na jeho liště záložek, pokud by i zde měl být uložen nějaká control, to stejně nebude fungovat)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2996
  • Karma: 29
    • Verze Delphi: XE7 professional
Re:Použitý skin nevykresľuje komponenty
« Odpověď #4 kdy: 06-12-2017, 08:39:15 »
OT: odkedy používam TMS, tak také problémy nepoznám
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Slavomir

  • Nováček
  • *
  • Příspěvků: 45
  • Karma: 0
    • RQ Money
Re:Použitý skin nevykresľuje komponenty
« Odpověď #5 kdy: 07-12-2017, 20:14:50 »
Problém som vyriešil, ale inak - postupným krokovaním som zisťoval, kedy nastane kolaps pri prekreslení okna (pri štarte programu je toto okno skryté). Program totiž pri svojom spustení otvára naposledy použitú databázu. Ak však žiadnu neotvára, hlavné okno sa vykreslilo vždy správne. Takže problém musel byť pri otváraní databázy, kedy sa vykonávajú rôzne príkazy.
Čakal som všetko možné, len nie to, že to bude spôsobovať príkaz:
Kód: Delphi [Vybrat]
  1. Form.Caption := názov programu + " [" +  názov databázy + "]";

Ak tento príkaz zakomentujem, celé okno sa rýchlo a bez chyby vykreslí (dokonca aj viacnásobný TPageControl) !!!
Použil som "obchádzku", tento príkaz sa teraz spúšťa na TTimer hneď po otvorení databázy. Okno sa vykreslí rýchlo a bez problémov.   8)

Vďaka všetkým za tipy na riešenie!
Delphi XE2, RQ Money

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Jméno: E-mail:
Ověření:
Datový typ v Delphi, který má True a False: