Poslední příspěvky

Stran: [1] 2 3 ... 10
1
U me ukladani pada s vyjimkou Invalid floating point operation. Jakozto prikladny ignorant jsem se pokusil vsechny floating point vyjimky zamaskovat. No, ulozeni probehlo, nicmene ten vlozeny objekt byl, hm, absolutne prazdny.
Ja to vubec necet ani nikdy nid nedelal s RichEdit, ale kdyz ctu o vyjimce s floating point, nepomuze nastavit ridici slovo koprocesoru? Byvaly s tim problemy u OpenGP, WbBrowseru etc.... Nezkousel jsi?
Kód: Delphi [Vybrat]
  1. Set8087CW($133F);  // To suppress FPU floating point exceptions
2
U me ukladani pada s vyjimkou Invalid floating point operation. Jakozto prikladny ignorant jsem se pokusil vsechny floating point vyjimky zamaskovat. No, ulozeni probehlo, nicmene ten vlozeny objekt byl, hm, absolutne prazdny.
3
Právě že to na všech předchozích WIN funguje a dokonce i na WIN 10, dokud nepřišla ta nešťastná aktualizace WIN 10.
Takže na doporučení přikládám v příloze projekt, kde jsem umístil ke komponentě TJvRichedit tlačítko vyvolávající dialog vložení OLE objektu a tlačítko pro uložení rtf do souboru (po vložení OLE objektu). Spolehlivě to padá...
V jiné primitivní aplikaci jsem vyzkoušel TOLEContainer a jeho uložení spolehlivě bezchybně funguje. Tu tedy nepřikládám :-)
Budu vděčný, pokud někdo přijde na řešení.
Jinak už bádám v náhradním řešení, kdy se OLE objekt bude připojovat přímo bez RTF editoru, ale znamená to doprogramovat celou řadu funkcí...
4
Obecné / Re:Test na datovou řadu v Tchart
« Poslední příspěvek od Faltynek kdy Dnes v 15:03:58 »
Citace
Pak tedy SeriesCount. Existuje, bohuzel nedokazu rict kdy vznikla :-[
Máš pravdu, omlouvám se za paniku, v D2009 už je, jenom jsem se k ní nedopídil.

Měl jsem program v D5, s grafem, kde jsem pomocí
Kód: [Vybrat]
procedure TForm1.chkRight1Click(Sender: TObject);
begin
if chkRight1.checked then
begin
   chart1.Series[0].VertAxis:=aRightAxis;   //prehodit na pravou osu Y
   lbLR1.Caption:='>';
end else
begin
   chart1.Series[0].VertAxis:=aLeftAxis    //prehodit na pravou osu Y
   lbLR1.Caption:='<';
end;
end;
a potom
Kód: [Vybrat]
        if i=1 then
        begin
           clear;
           AddXY( 0 ,hodn  , casstr, );
        end else
        begin
           AddXY( XValues.Last+1 ,hodn , casstr, );
        end;
v nějakým cyklu načítal hodnoty do 1. datové řady.
Teď to nefunguje, na pravé ose je furt nula a nevím proč. Poradí někdo? Asi jsem na něco zapomněl. Nebo je něco v Teechartu jinak?

Díky Dalibor.
5
Obecné / Re:TwebBrowser - ako vynútiť otvorenie linku v default win browsery
« Poslední příspěvek od Delfin kdy Dnes v 12:12:41 »
V udalosti OnBeforeNavigate2 se provede zruseni navigace a napr. funkci ShellExecute se preda pozadovany URL (vyuzije se tak Windows Shell k otevreni ve vychozi aplikaci).
6
Obecné / TwebBrowser - ako vynútiť otvorenie linku v default win browsery
« Poslední příspěvek od František kdy Dnes v 12:08:12 »
TwebBrowser - ako vynútiť otvorenie html linku v default win browsery z app.
7
Obecné / Re:Rozdiel medzi Invalidate, Refresh a Repaint u vizualnych VCL komponent
« Poslední příspěvek od Delfin kdy Dnes v 07:14:22 »
Mozno som zvolil zly postup pri pridavani hodnot do serii. Vzdy pristupujem k jednotlivym seriam priamo pomocou ich premennej a nie pomocou kolekcie cez TChart kontajner. Najprv vsetkym seriam zavolam metody BeginUpdate. Potom do nich nasukam hodnoty a potom vsetkym zavolam EndUpdate. Toto by som mozno mohol zmenit a volat BeginUpdate a EndUpdate len raz pre samotny TChart. Neviem jak je to vo vnutry poprepajane a zmenezovane.

TChart nema metody BeginUpdate a EndUpdate. Nicmene ten postup se zamykanim serii je mozna i zbytecny, protoze pridavas do dane serie jen 1 hodnotu. Ten zamek serii je pro hromadne pridavani hodnot. Co je vsak divne je, proc se graf prestane vykreslovat. Nechybi Ti nekde odemceni toho zamku (do paru chybejici EndUpdate)?

Jinak obecne se pro zamceni vykreslovani komponent da pouzit zprava WM_SETREDRAW. Myslenka je takova, ze pomoci ni grafu zamknes vykreslovani, nasypes vsechny hodnoty, vykreslovani odemknes a vyvolas prekresleni.

A tak nejak sa mi mari ze zvycajne sa odporucalo pouzivat Invalidate...

Ano, to je spravny zpusob pro situace kdy nepotrebujes okamzite kresleni vystupu. Zprava WM_PAINT ma vsak (stejne jako napr. WM_TIMER) snizenou prioritu a muze se stat, ze napr. drzis stisknute tlacitko mysi a tim drzenim se pres frontu mysich zprav k WM_PAINT jen tak nedostanes. Proto se pouziva bypass v podobe Repaint (nebo Refresh), pripadne Update (jenz narozdil od Repaint neinvaliduje zadny region, hodi se tedy pro okamzite kresleni mensich oblasti).

Samotny princip kresleni ve Windows je jednoduchy. Invaliduji se regiony okna a Windows za to posila (se snizenou prioritou) zpravu WM_PAINT. No a ty pak v aplikaci cekas na tu WM_PAINT, pomoci BeginPaint si vyzvednes ten invalidovany region a do nej kreslis co potrebujes.

Z toho take plyne, ze pokud chces vyvolat prekresleni jen urcite oblasti komponenty, nevolas k tomu VCL Invalidate, ale WinAPI InvalidateRect, prip. InvalidateRgn s regionem jenz se ma obcerstvit.
8
Obecné / Re:Jak vykreslit otočený PNG s průhledností
« Poslední příspěvek od vandrovnik kdy Dnes v 00:20:56 »
S TDirect2DCanvas to vypadá podstatně lépe - po trošce optimalizací jsem docílil toho, že vykreslit 10 000 obrázků trvá 22 ms :-)

Resp. s tím časem je to divné. tStopWatch naměří 22 ms, to samé naměřím sám pomocí QueryPerformanceCounter. Nicméně reálně to trvá déle. Když nechám vykreslit 100 000 větších obrázků, naměřím 187 ms, subjektivně to trvá lehce přes sekundu. Během toho vykreslování ve Správci úloh je CPU i GPU u té mé aplikace 0 %, ale přitom v celkovém vytížení GPU je vidět 100 %.
9
Obecné / Re:Jak vykreslit otočený PNG s průhledností
« Poslední příspěvek od vandrovnik kdy 16-12-2018, 23:12:24 »
Tak GDI+ to opravdu zvládne, akorát rychlost je tragická. Vykreslit obrázek 900x900 px na monitor v cílové velikosti 50x50 px trvá 32 ms, takže vykreslit 10x = 320 ms... Ještě se podívám na TDirect2DCanvas, tam by asi byl jen problém s těmi, co se ještě nevzdali Windows XP.
10
Obecné / Re:Test na datovou řadu v Tchart
« Poslední příspěvek od Delfin kdy 16-12-2018, 22:12:21 »
Jinak pomoci Series.Count se zjištuje počet bodů v sérii a SeriesCount vlastnost neexistuje.

Pravda. Omlouvam se! Pak tedy SeriesCount. Existuje, bohuzel nedokazu rict kdy vznikla :-[
Stran: [1] 2 3 ... 10