Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Delphi - komponenta na zobrazenie grafiky a textu s podporou stĺpcov bez deliacich čiar

1. Chcel by som poprosiť o radu, akú komponentu použiť v Delphi, ak chcem, aby splnila tieto kritériá:
- rozdelenie do stĺpcov (ako TStringGrid, ale bez rozdelovacích čiar)
- viac položiek a jednoduchý prístup k nim (ako ListBox)
- podpora grafiky (v jednom stĺpci bude grafický pás s dĺžkou podľa čísla uvedeného v druhom stĺpci)

Takto to bude približne vyzerať (toto je textový vzhľad):

asd   23   ++++++++++++++++++++++
jkl   12   +++++++++++
mno   6    ++++++

Takže hádam mi rozumie každý (miesto plusiek bude samozrejme FillRect v TCanvas). Taktiež nie je nutná konštantná šírka znakov. Tag CODE je použitý len kvôli zdôrazneniu stĺpcov.

2. Potrebujem objekt, kde tieto hodnoty uchovám (podľa možnosti nevizuálny). Pokiaľ má StringList aj vlastnosť Tag, tá by sa dala použiť na tieto účely. Síce to nebudú čísla, ale časy, ale uložím počet sekúnd. Ale skôr hľadám niečo ako nevizuálny TStringGrid.

Předmět Autor Datum
Nevim co myslis ale neslo by treba pouzit Tlistview , nebo pokud chces text jako rxrichedit obrazky…
virus 03.07.2006 17:34
virus
StringGrid muzes klidne pouzit, pokud si udelat vlastni vykreslovani. Muzes pouzit i ListView, ale n…
Jan Fiala 03.07.2006 18:39
Jan Fiala
A je možné použiť TStringGrid a vypnúť v ňom zobrazenie deliacich čiar a kresliť? Ak áno, tak ako? M…
msx. 04.07.2006 06:29
msx.
Vypnout zobrazovani car ne, ale je mozno je pomoci uzivatelskeho vykreslovani nevykreslit. Radeji sa…
Jan Fiala 04.07.2006 07:58
Jan Fiala
Pozriem sa na ten TListView teda a ešte som si všimol, že existuje TDrawGrid. Dá sa to použiť? Edit…
msx. 04.07.2006 16:15
msx.
Najvhodnejšou komponentou by bol TListView so zobrazením v stĺpcoch a riadkoch. Len ako teda zariadi…
msx. 04.07.2006 21:39
msx.
Vykresleni Grafu v listview leda tam vlozit obrazek ale neni lepsi si udelat ten graf mimo treba v p…
virus 04.07.2006 22:10
virus
No nič, tak odznova: Potrebujem niečo, čo bude vyzerať ako ListBox alebo ListView alebo RichEdit. Mu…
msx. 05.07.2006 09:25
msx.
Mám ďalší nápad. Môžem to spraviť tak, že použijem ScrollBar a Image. Podľa posunutia ScrollBar bude…
msx. 05.07.2006 12:08
msx.
Nakoľko tu diskutujem sám a kompetentní tu zrejme asi nie sú, tak vlákno uzatváram a označujem za vy…
msx. 05.07.2006 20:34
msx.
Nic v ylom chalani, ale kludne moyes pouzit TStringGrid. Totisto, TStringGrid obsahuje polosku v ins…
Triskac 17.03.2007 11:10
Triskac
To znie zaujímavo, niekedy sa s tým pohrám. poslední
msx. 17.03.2007 23:26
msx.

Najvhodnejšou komponentou by bol TListView so zobrazením v stĺpcoch a riadkoch. Len ako teda zariadiť vykreslenie grafu v poslednom stĺpci? Idem na nočnú uvidíme sa ráno. Takže poprosím diskusiu aj bezo mňa, len aby som vedel ráno nájsť v diskusii najvhodnejšie riešenie.:-) V kašdom prípade ďakujem za pripomienky.

No nič, tak odznova:
Potrebujem niečo, čo bude vyzerať ako ListBox alebo ListView alebo RichEdit. Musí to umožniť vkladať údaje do stĺpcov, čiže sa jedná o zarovnanie. Tým teda môžem ListBox (a možno aj ListView, nakoľko túto komponentu nepoznám, zrušiť). RichEdit tiež na to nie je vhodný, nakoľko sa mi údaje budú "opakovať", pretože v každom riadku bude "to isté", len iné údaje. Tu by teda bolo vhodné použiť StringGrid alebo DBGrid. Nepáčia sa mi predeľovacie čiary, takže opäť neúspech. No a ďalšou vecou je, že tam nesmie byť Canvas, ktorého obsah sa ukladá do pamäte, čiže nie na spôsob Image. Skôr niečo na spôsob Form, kde sa nakreslené údaje neuchovávajú. Pri väčších výpisoch by to bol neskutočný žráč pamäte. Musí to teda umožňovať používateľské vykresľovanie vždy vtedy, keď vznikne podmienka na zobrazenie záznamu. Marí sa mi, že existuje niečo ako ListBox s podporou grafiky. Tu by som si nejako (len neviem ako, potrebujem trochu nakopnúť) urobil používateľské vykreslenie aktuálneho záznamu. Totiž do Canvas mi nerobí problém zobraziť text pomocou TextOut a tým zaistiť vykreslenie textu zarovnaného do stĺpcov. Teraz už len ako na to? Potrebujem už len poradiť ako umožniť vykreslenie aktuálneho záznamu do ListBoxu cez používateľské vykresľovanie.

Edit: Teraz ma napadlo, že vlastne by som mal vyriešené aj uchovanie hodnôt v ListBoxe. Záznamy budú uchované v jednom texte oddelené nejakým oddeľovacím znakom a tým zaistím "stĺpce", ktoré sa stanú reálnymi pri vykresľovaní.

Edit 2: Ako urobiť používateľské triedenie v ListBox?

Nakoľko tu diskutujem sám a kompetentní tu zrejme asi nie sú, tak vlákno uzatváram a označujem za vyriešené. Riešiť to budem pomocou TImage, ktoré sa bude prekresľovať v závislosti na posunutí ScrollBar. Používateľské údaje budem triediť vlastným triedením v TStringList. Prosím odpovede na triedenie do tohto vlákna:
http://pc.poradna.net/question/view/45793-delphi-ak o-urobit-pouzivatelsku-metodu-na-triedenie-tstringl ist

Nic v ylom chalani, ale kludne moyes pouzit TStringGrid. Totisto, TStringGrid obsahuje polosku v inspektore, kde nastavujes ci chces zobrazit RowLine,ColLine atd. tusim sa to vola Options alebo tak. ca sa tyka vlastneho vykreslovania, na to sluzi events onDrawDCell kde zadas:

nazov_stringgrid.canvas.brush.color := farba;
nazov_stringgrid.canvas.fillrect(nazov_stri nggrid.cellrect(ACol,ARow));

kde ACol a ARow ti vracia onDrawCell alebo pouzijes vlastne cisala :o)

to iste sa da aj textom a to cez canvas.textRect alebo Text Out, podla toho ci chces nastavit aj farbu pozadia pisma

moze byt alebo este nieco :o)

Triskac

Zpět do poradny Odpovědět na původní otázku Nahoru