Autor Téma: AdvStringGrid od TMS  (Přečteno 3692 krát)

Marcelka

  • Host
AdvStringGrid od TMS
« kdy: 16-10-2013, 18:58:43 »
Zdravím.
Tato komponenta mně docela nadchla.
Mam však problem.
Nejde rolovat myši po bunkach.
Přeskakuje to po 5 bunkach.
Nevite kde muže byt problem.
Neni to někde nastaveno a ja to přehledla. 

Offline < z >

  • Administrátoři
  • Guru
  • *****
  • Příspěvků: 1127
  • Karma: 42
    • Verze Delphi: 7, 2010
Re:AdvStringGrid od TMS
« Odpověď #1 kdy: 16-10-2013, 20:00:19 »
stacilo by prvne alespon 1 minutu patrat .... MouseActions a WheelIncrement

Marcelka

  • Host
Re:AdvStringGrid od TMS
« Odpověď #2 kdy: 18-10-2013, 06:11:47 »
Děkují moc,hold přehlédla jsem.

Můžu ještě jeden.
Nějak nemohu nastavit správnou šířku gridu a už se s tým solím druhy den.

Mám jen Form a v něm AdvStringGrid, který ma 5 sloupců .
Ve form jsem nastavila AutoSize na true , takže se přilepil ke gridu.
V gridu jsem take nastavila AutoSize na true.
Ve FormCreate se načtou data.
a pak

AdvStringGrid.ColWidths[0] := 20;
AdvStringGrid.ColWidths[4] := 60;   
AdvStringGrid.ColWidths[5] := -1;   
AdvStringGrid.AutoSizeColumns(true,10);

pokud jsem to správně pochopila, tak pokud je hodnota na true, funkce AutoSizeColumns si nevšímá buněk nastavěných napevno.

Proč grid nenastaví správnou šířku sam?
Jsou vidět jen sloupce 0,1,2,3
Vím že se to da spočítat, ale při načítání dat je jích různý počet takže někdy je  VertScrollBar a někdy ne.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4420
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:AdvStringGrid od TMS
« Odpověď #3 kdy: 18-10-2013, 10:13:38 »
Citace
Ve form jsem nastavila AutoSize na true , takže se přilepil ke gridu.
V gridu jsem take nastavila AutoSize na true.
Ako amatér na to dosť čumím. Pre formuláre nikdy nemám AutoSize = True. Neviem si predstaviť situáciu, kde by to malo význam. Skoro vždy ich mám bsSizeable. Určite by som nastavil pre grid Align na AllClient.
Citace
Proč grid nenastaví správnou šířku sam?
Jsou vidět jen sloupce 0,1,2,3
Ja som presvedčený, že si ju nastaví  :-\ .  Ale v princípe. Nastaví si šírku jednotlivých stĺpcov ale samotný grid je širší ako formulár!
Ak sa nemýlim, tak máš dve možnosti:
1) budeš využívať horizontálny bežec
2) prepočítaš šírku formulára. To Ti asi užívateľ pekne poďakuje. Preto má byť formulár bsSizeable a jeho veľkosť a polohu si máš uložiť na disk a pri jeho vytvorení ich použiť.
 
Oprava: To som tomu dal. Nie grid je širší ako formulár, ale súčet šírok všetkých stĺpcov je väčší ako šírka gridu..
 
« Poslední změna: 18-10-2013, 10:21:16 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Marcelka

  • Host
Re:AdvStringGrid od TMS
« Odpověď #4 kdy: 21-10-2013, 08:03:19 »
Dobry den.
A zas problém.
Když držím ctrl a točit kolečkem myší, tak text v gridu mění velikost.
Nemohu najití, kde to vypnout.

Offline Ondřej Pokorný

  • Guru
  • *****
  • Příspěvků: 815
  • Karma: 59
    • Verze Delphi: Primárně Lazarus, jinak D7 až aktuální
    • Kluug.net
Re:AdvStringGrid od TMS
« Odpověď #5 kdy: 21-10-2013, 09:35:06 »
Zkusím poradit, jak na to, když něco nevím:

1.) Zkusím google: https://www.google.com/search?q=tms+advstringgrid+ctrl%2Bscroll+changes+font+size.

2.) Google našel dokument http://www.tmssoftware.com/site/manuals/TMS%20TAdvStringGrid%20v6.0%20What%27s%20new.pdf.

3.) Tam píší o nějaké funkci IntelliZoom. Trefil jsem se? TMS komponenty nepoužívám, takže to nemůžu zkontrolovat a můžu být úplně mimo.

Embarcadero Technology Partner

Marcelka

  • Host
Re:AdvStringGrid od TMS
« Odpověď #6 kdy: 21-10-2013, 16:22:00 »
No jo trefil.
Hold umíš hledat a nejsi blondýna  ;)

Marcelka

  • Host
Re:AdvStringGrid od TMS
« Odpověď #7 kdy: 21-11-2013, 08:12:43 »
Tak jsem dala na radu Stanislava.
Form mam  bsSizeable
grid Align na AllClient.

Ve FormCreate

AdvStringGrid1.ColWidths[0] := 25;   
AdvStringGrid1.ColWidths[1] := 60;
AdvStringGrid1.ColWidths[2] := 70;   
AdvStringGrid1.ColWidths[3] := 40;   
AdvStringGrid1.ColWidths[4] := 40;

Vypada to takto.
Jak se zbavím t bile častí?
http://www.fastimages.eu/images/grid.jpg

Offline < z >

  • Administrátoři
  • Guru
  • *****
  • Příspěvků: 1127
  • Karma: 42
    • Verze Delphi: 7, 2010
Re:AdvStringGrid od TMS
« Odpověď #8 kdy: 21-11-2013, 08:29:01 »
Treba zmensenim formulare? :)

Offline KarelHorky

  • Plnoletý
  • ***
  • Příspěvků: 196
  • Karma: 8
    • Verze Delphi: 7, XE6, Delphi 10.2 Tokyo
Re:AdvStringGrid od TMS
« Odpověď #9 kdy: 21-11-2013, 08:33:16 »
Nebudeš šířku sloupců nastavovat konstantami, ale ve FormResize si spočítáš šířku sloupce tak, aby ti zaplnili celý form.
Kód: Delphi [Vybrat]
  1. var
  2.   MojeSirka,i: integer;
  3. begin
  4.   MojeSirka := Floor(AdvStringGrid1.Width / AdvStringGrid1.ColCount);
  5.   for i := 0 to AdvStringGrid1.ColCount-1 do begin
  6.     AdvStringGrid1.ColWidths[i] := MojeSirka;
  7.   end;
  8. end

Takto zaplníš celý formulář. Je dobré ještě počítat se svislým posuvníkem a dostupnou šířku (AdvStringGrid1.Width) zmenšit o šířku posuvníku. Floor ti zaokrouhluje na nejbližší nižší celé číslo, takže se do formuláře vždy vejdeš.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2588
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:AdvStringGrid od TMS
« Odpověď #10 kdy: 21-11-2013, 08:39:47 »
Jak se zbavím t bile častí?
S timhle gridem jsem nikdy nic nedelal, ale nektere gridy mivaji moznost nastavit jeden sloupec jako auto-sized a grid ten sloupec automaticky roztahne do zbyvajici sirky. Jinak se takovy sloupec musi dopocitavat a nastavovat v nejake udalosti OnResize rucne.

Marcelka

  • Host
Re:AdvStringGrid od TMS
« Odpověď #11 kdy: 21-11-2013, 08:59:22 »
S timhle gridem jsem nikdy nic nedelal,
Je to úplně to same jak klasicky grid.
Asi jsem se špatně vyjádřila.
Už když připlacenu klasicky grid na form, tak má nastavenou tabulku 5 x 5 sloupců.
Za ním a pod nim je však prázdna bila část.
Te se nemohu zbavít

Offline TLama

  • Guru
  • *****
  • Příspěvků: 597
  • Karma: 31
    • Verze Delphi: 7, 2009, XE3
Re:AdvStringGrid od TMS
« Odpověď #12 kdy: 21-11-2013, 09:14:23 »
Jak se zbavím t bile častí?
http://www.fastimages.eu/images/grid.jpg

Třeba když ji vyplníš v malování ;D

Ne, teď vážně. Jednou jsem tenhle grid použil (celkem dávno) a tehdy neměl žádnou možnost nastavení autosize jednoho
sloupce. Tedy, on tu možnost nemá, protože jeho sloupce nejsou položky kolekce, ale stejně jako u klasického string gridu
se jedná o string list a nastavení šířek se řeší pomocí kolekce ColWidths.

Nevím to přesně, ale existovala nějaká metoda AutoFitColumns nebo tak nějak a ta se dala zavolat z události OnResize.

Jinak ono samozřejmě kromě toho vyplnění záleží jakým způsobem chceš prostor vyplnit. Můžeš roztahovat fixní sloupec(ce),
všechny nefixní nebo třeba jen jeden z nich. Zkus možná ještě rozvést jakým způsobem chceš ten prostor vyplnit. Co si ještě
pamatuju, ten AutoFitColumns nebyl z uživateslkého pohledu moc kvalitní. Možná už je ale od té doby všechno jinak ::)
« Poslední změna: 21-11-2013, 09:18:27 od TLama »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4420
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:AdvStringGrid od TMS
« Odpověď #13 kdy: 21-11-2013, 09:49:43 »
Ešte je ďalšia možnosť. Také škriabanie sa cez hlavu.

Grid nebude cez celý formulár. Hodiť grid na panel + splitter. Potom je na užívateľovi ako si to nastaví. Šírku stĺpcov by som určite nedával natvrdo. Predpokladám, že tom máš len kvôli ukážke.

Tej bielej časti sa predsa užívateľ môže zbaviť nastavením veľkosti formulára. Nechaj to na ňom.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

k

  • Host
Re:AdvStringGrid od TMS
« Odpověď #14 kdy: 09-07-2016, 15:30:50 »
Zdravím.
V default je vybrana bunka modre barvy.
Nemohu zjistit jak ji změním.
Neví někdo?
Chtěl bych aby zustala takova, jaka je na pozadí a překreslovala by se.