IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

13. diel - Prehľad premenných, StringGrid a Pagecontrol

Začnime takým malým prehľadom:

premenná hodnoty veľkosť
INTEGER -2147483648 až 2147483647 4 bajty (32 bitov)
CARDINAL 0 až 4294967295 4 bajty (32 bitov)
short int -128 až 127 1 bajt (8 bitov)
SMALLINT -32768 až 32767 2 bajty (16 bitov)
longint -2147483648 až 2147483647 4 bajty (32 bitov)
Int64 -9223372036854775808 až 9223372036854775808 8 bajtov (64 bitov)
byte 0 až 255 1 bajt (8 bitov)
Word 0 až 65535 2 bajty (16 bitov)
LongWord 0 až 4294967295 4 bajty (32 bitov)
Iste ste si všimli, že Integer má hodnotu rovnakú, ako longint a Cardinal ako LongWord.
premenná hodnoty DM veľkosť
REAL 5.0 x 10 -324 až 1.7 x 10 308 15-16 8 bajtov
Real48 2.9 x 10 -39 až 1.7 x 10 38 11-12 6 bajtov
single 1.5 x 10 -45 až 3.4 x 10 38 7-8 4 bajty
double 5.0 x 10 -324 až 1.7 x 10 308 15-16 8 bajtov
extended 3.6 x 10 ^ -4951 až 1.1 x 10 4932 19-20 10 bajtov
comp -9223372036854775807 až 9223372036854775807 19-20 8 bajtov
Currency -9223372036854­77.5808 až 9223372036854­77.5807 19-20 8 bajtov
DM = počet ukladaných (a zobrazovatelných) desatinných miest

Tu je opäť zhodný Real a Double. Proste Real (a rovnako tak aj Integer a Cardinal) je taký všeobecnejšie a ostatné typy sú presnejšie. Ak teda viete, že číslo bude len treba od nuly do sto, ušetrite v pamäti 3 bajty a použite short int alebo Byte! Každý bajt pamäte sa hodí!

To by sme mali súhrn čísel. Teraz ešte pár vychytávok pre string:

premenná počet znakov veľkosť
ShortString 255 2 bajty až 256 bajtov
AnsiString (string) 2147483648 4 bajty až 2 gigabajty
WideString 1073741824 4 bajty až 2 gigabajty
Prečo má AnsiString viac znakov než WideString? AnsiString má menej symbolov. Ak teda chcete napísať nejaký naozaj veľa dlhý text, použite WideString a ak kratšie, stačí ShortString. A teraz konečne tie vychytávky:

AKO NAPÍSAŤ apostrof V DELPHI?
OK, informujem celkom neskoro! :-) Buďto si prepnete klávesnicu na Anglickú, alebo stlačíte ľavý Alt a na numerickej klávesnici naťukáte 39.
AKO NAPÍSAŤ apostrof DO STRING?
Pomocou dvoch apostrofov!

Ukázka:  Napis := 'Hello, you''re clever!'  {Napis bude: Hello, you're clever!}

FINTA:
nemusíte písať

'řádek 1'+#13+'řádek 2'

ale stačí

'řádek 1'#13'řádek2'

Ešte vás zoznámim s jednou funkciou a potom sa pustíme do témy trinástky:

StringPromenna := BoolToStr(BooleanPromenna, True);

// Je-li proměnná BooleanPromenna:Boolean; True,
// potom je StringPromenna:string; 'True'.
// Je-li proměnná BooleanPromenna:Boolean; False,
// je StringPromenna:string; 'False'.
StringPromenna := BoolToStr(BooleanPromenna, False);

// Je-li proměnná BooleanPromenna:Boolean; True,
// je StringPromenna:string; '-1'.
// Je-li proměnná BooleanPromenna:Boolean; False,
// je StringPromenna:string; '0'.

alebo:

StringPromenna := BoolToStr(BooleanPromenna, True);

Je to isté ako:

if BooleanPromenna then
  StringPromenna := 'True' else
  StringPromenna := 'False';

A

StringPromenna := BoolToStr(BooleanPromenna, False);

Je to isté ako:

if BooleanPromenna then
  StringPromenna := '-1' else
  StringPromenna := '0';

StringGrid a DrawGrid

Konečne sa ale pusťme do niečoho úplne nového! V menu objektov zvoľte záložku Additional a tam by štvrtý zľava mal byť: STRINGGRID. Je to vlastne TABUĽKA! A konečne sa dozviete, ako na ňu ... Najprv si popíšme položky v Properties v Object Inspector:

  • ColCount - celkový počet stĺpcov
  • Color - farba pozadia tabuľky
  • DefaultColWidth - základná šírka stĺpce
  • DefaultDrawing - automatické vykresľovanie políčok tabuľky
  • DefaultRowHeight - základná výška riadku
  • FixedColor - farba pevných políčok tabuľky *
  • FixedCols - počet pevných stĺpcov *
  • FixedRows - počet pevných riadkov *
  • GridLineWidth - šírka čiary oddeľujúce políčka
  • ROWCOUNT - celkový počet riadkov

*: Pevná políčka sú tie krajné s nápisom, napr. Dňa a hodiny v rozvrhu. V príklade tá sivá políčka:

deň \ hodina 0. 1. 2. 3.
pondelok tv hľa M F
Utorok D Vv čj
Ešte ste si iste všimli položky Options, ktorá sa delí na veľa Boolean:
  • goFixedVertLine - zobrazovať vertikálne (zvislú (od zhora nadol)) deliacu čiaru pri pevných polí
  • goFixedHorzLine - zobrazovať horizontálne (vodorovnú (zľava doprava)) deliacu čiaru pri pevných polí
  • goVertLine - zobrazovať vertikálne (zvislú (od zhora nadol)) deliacu čiaru u obyčajných polí
  • goHorzLine - zobrazovať horizontálne (vodorovnú (zľava doprava)) deliacu čiaru u obyčajných polí
  • goDrawFocusSelected - vybrané políčko tabuľky sa vyfarbia
  • goRowSizing - možnosť menenia veľkosti riadkov
  • goColSizing - možnosť menenia veľkosti stĺpcov
  • goRowMoving - možnosť presúvania riadkov na iný riadok
  • goColMoving - možnosť stĺpcov na iný stĺpec
  • goEditing - užívateľ môže vpisovať svoj text do tabuľky
  • goTabs - šírka čiary oddeľujúce políčka
  • goRowSelect - kliknutím sa vyberie celý riadok
  • goAlwaysShowEditor - ak je goEditing True, začne sa text v poli editovať hneď po prvom kliknutí (inak až po druhom)

POZOR! Premiestňovať, meniť veľkosť a editovať text užívateľ nemôže pri pevných stĺpcov!

Vedľa StringGridu je tiež DrawGrid. O tom si nič hovoriť nebudeme, pretože je to vlastne skoro to isté. StringGrid je totiž vylepšenia DrawGrid. V DrawGridu napríklad nemôžete jednoduchým spôsobom do každého poľa vložiť iný text! Doteraz poznáte základ! Teraz však musíte vedieť s tabuľkou pracovať v programe! Začnime textom v políčkach! K tomu slúži položka CELLS:

StringGrid.Cells[sloupec, radek] := 'libovolný text';

POZOR: číslo stĺpcov a riadkov (stĺpec a radek) začínajú nulou! Pr:

stĺpec 0, riadok 0 stĺpec 1, riadok 0 stĺpec 2, riadok 0
stĺpec 0, riadok 1 stĺpec 1, riadok 1 stĺpec 2, riadok 1
stĺpec 0, riadok 2 stĺpec 1, riadok 2 stĺpec 2, riadok 2
Takže ak do ľavého rohu tabuľky Tabuľka chcete napísať ROZVRH, zadáte:
Tabulka.Cells[0, 0] := 'ROZVRH';

Čo môžeme ale robiť ďalej? StringGrid má Canvas. Čo je veľmi užitočné. Môžete si vkladať obrázky, kresliť rôzne tvary, proste čokoľvek, čo Canvas vie. Je to rovnaký typ Canvas,, ako pri okne. Väčšina špeciálnych funkcií tabuľky sa dá využiť len s vypnutým automatickým vykresľovaním políčok. Ešte vám poviem jednu, kterolze použiť kedykoľvek a potom sa pustíme do tých špeciálnych ...

StringGrid.RowHeights[CisloRadku] := VyskaRadku;

Namiesto CisloRadku zadáte číslo riadku (0 až počet riadkov mínus jedna) a miesto VyskaRadku zadáte Integer, alebo číslo, ktoré určí, koľko pixelov bude mať určený riadok na výšku. A čo stĺpec? Ten je možné meniť tiež:

StringGrid.ColWidths[CisloSloupce] := SirkaSloupce;

Namiesto CisloSloupce zadáte číslo stĺpca (0 až počet stĺpcov mínus jedna) a miesto SirkaSloupce zadáte Integer, alebo číslo, ktoré určí, koľko pixelov bude určený stĺpec široký. Takže keď chcete ľavý stĺpec a horný riadok tabuľky Rozvrh urobiť veľké 25 pixelov, napíšete:

Rozvrh.RowHeights[0] := 25;
Rozvrh.ColWidths[0] := 25;

A teraz sa vrhneme na špecialitu. Základom bude, že zvolíte OnDrawCell v ObjectInspectoru v záložke Events. Vytvorí sa vám procedúra. Pokiaľ si pomenujete StringGrid ako Tabuľka a okno ako Okno, bude mať procedúra tento tvar:

procedure TOkno.TabulkaDrawCell(Sender: TObject; ACol,
ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
end;

Najprv sa nakreslí mriežka a potom sa pre každé pole spustí táto procedúra! Medzi begin a end samozrejme budete písať text, ale čo všetko nám určujú všetky tie netradičné premenné? ACol je číslo stĺpca a Arow je číslo riadku. Rect je TRect, ktorý vás odkáže na políčko (keď zadáte StringGrid.Can­vas.Rectangle (Rect) ;, nakreslí sa vám do každého poľa (ak to neupřesníte pomocou if) štvorec). Do Rect sa nepočítajú miesta, kde je mriežka. A State? TGridDrawState má tieto možnosti:

  • gdSelected - pole, ktoré sa vykresľuje je vybrané
  • gdFocused - pole je jedno z ostatných vybraných

gdFixed - vykresľovanie poľa je pevné

Ak nechápete prvé dve, tu vám to ešte upresním: Užívateľ klikol na pole (je teda vybrané) a potom ťahal k inému poli (tým vznikla ostatné vybraté polia). Pokiaľ máte goDrawFocusSelected v Options ako False, zobrazí sa vám vybraté pole biele, ale okolo bude rámček čiarkovanou čiarou a ostatné vybrané sú zobrazené inou farbou (štandardne modrou). Ak iba kliknete, nebudú ostatné vybraté polia! Ak máte nastavené goDrawFocusSelected na True, budú Všchny vybrané položky jednou farbou (štandard je modrá), vrátane tej prvej. ukážka:

pevné pole obyčajné pole obyčajné pole obyčajné pole obyčajné pole
pevné pole 1. vybrané p. vybraté pole vybraté pole obyčajné pole
pevné pole vybraté pole vybraté pole vybraté pole obyčajné pole
pevné pole obyčejnépole obyčajné pole obyčajné pole obyčejnépole
pevné pole obyčejnépole obyčajné pole obyčajné pole obyčajné pole
A teraz zobrazenie, keď je goDrawFocusSelected False:
pevné pole obyčajné pole obyčajné pole obyčajné pole obyčajné pole
pevné pole 1. vybrané p. vybraté pole vybraté pole obyčajné pole
pevné pole vybraté pole vybraté pole vybraté pole obyčajné pole
pevné pole obyčajné pole obyčajné pole obyčajné pole obyčajné pole
pevné pole obyčajné pole obyčajné pole obyčajné pole obyčajné pole
Ale čo písať do tej procedúry? Tak treba do každého poľa nakresliť iný obrázok. Alebo do každého poľa umiestniť text iným fontom. Tu sa zoznámite s ďalšou funkciou Canvas,:
Canvas.TextRect(Rect, Zleva, Shora, Text);

Rect je typu TRect a určuje miesto, kde sa bude písať Text typu string (alebo podobného). Zľava a Zhora sú integer určujúce pozíciu textu. Pr. pre tabuľku do procedúry OnDrawCell:

StringGrid.Canvas.TextRect(Rect, Rect.Left, Rect.Top, StringGrid.Cells[ACol, ARow]);

Čo nám to urobí? Zakreslí text, ktorý som zadali pre vykresľovanie poľa. Má to tú výhodu, že môžete zmeniť Font písma, pomocou položky Font v Canvas. A ešte pri jednej procedúry môžeme využiť jednu špecialitu:

OnMouseDown (nebo OnMouseUp).

A akú špecialitu?

StringGrid.MouseToCell(X, Y, Sloupec, Radek);

Táto procedúra (áno, museli použiť procedúru a nie funkciu, pretože sú dva výstupy) vám vráti zo súradníc v tabuľke (v pixeloch (X a Y)) číslo stĺpca (Stĺpec) a riadku (Radek).

Aby nebol 7.bod príliš krátky, tak tu doplním informáciu o boolean, ktorú som sa nedávno dozvedel a ktorá vám iste uľahčí programovanie. Môžete totiž napísať:

Button1.Visible := 1 < 0;

Čo sa stane? Button1. Visible bude False. Takže miesto:

if X < Y then
  AnoNe := True else
  AnoNe := False;

(Kde Anon je Boolean a X a Y sú integer) môžete napísať:

AnoNe := X < Y;

Čo je oveľa jednoduchšie. Takže to zhrňme: Ak je zadaný výraz pravdivý, zastupuje True, ak nie, je to False.

PageControl

Keď už po dlhej dobe spoznávate nový objekt, oboznámime vás rovno s dvoma. S tabuľkou a so záložkovýmmenu. Teda aspoň tak som si to pomenoval. Pretože vôbec neviem, ako sa to povie po slovensky :-D . Anglicky je to Page Control. No, ale pusťme sa do popisu položiek a pod. Druhé zľava vo Win32 je PAGECONTROL. Je to to, čo máte hore v Delphi, kde si vyberáte objekty. Poďme ale na položky v Properties v Object Inspector:

  • HotTrack - má sa zmeniť farba textu záložky, na ktorú ukazuje kurzor?
  • Images - každá položka môže mať svoj obrázok zo zoznamu obrázkov (ImageListu), ktorý tu zadáte
  • Multiline - Ak zadáte True, budú položky usporiadané pod seba, ako vo Windows v oknách s nastavením, ak False, budú v jednom riadku a budú sa posúvať 2ma sipecka
  • OwnerDraw - zadáte ak True, prestanú sa vykresľovať popisky a obrázky jednotlivých položiek.
  • RaggedRight - pri MULTILINE ako True sa napravo urobí voľné miesto, ak zadáte True. Ak False, budú položky až ku kraju.
  • ScrollOpposite - pri MULTILINE ako True sa riadky zoradia zdola nahor a ak nižšia riadky, než je ten, z ktorého je vybraná záložka sa posunú pod obsah položky. Ak zadku FixedColor ako False, budú sa riadky položiek vždy vymieňať.
  • Style - nastavíte štýl zobrazenia záložiek: tsButtons-záložky budú vyzerať ako tlačidlá a riadky záložiek sa nebudú meniť (tlačidla iba zostanú stlačená)

    tsFlatButtons-záložky budú vyzerať ako tlačidlá s nastavením Flat na True (takže budú plochá) a riadky záložiek sa nebudú meniť (tlačidla iba zostanú stlačená)

    tsTabs-klasické Windowsovské záložky

  • tsButtons-záložky budú vyzerať ako tlačidlá a riadky záložiek sa nebudú meniť (tlačidla iba zostanú stlačená)
  • tsFlatButtons-záložky budú vyzerať ako tlačidlá s nastavením Flat na True (takže budú plochá) a riadky záložiek sa nebudú meniť (tlačidla iba zostanú stlačená)
  • tsTabs-klasické Windowsovské záložky
  • TabHeight - výška záložiek (tej časti s popisom)
  • TabPosition - nastavíte štýl zobrazenia záložiek: tpBottom-záložky budú umiestnené pod ich obsahom

    tsLeft-záložky budú umiestnené naľavo od ich obsahu

    tsRight-záložky budú umiestnené napravo od ich obsahu

    tsTop-záložky budú umiestnené nad ich obsahom

  • tpBottom-záložky budú umiestnené pod ich obsahom
  • tsLeft-záložky budú umiestnené naľavo od ich obsahu
  • tsRight-záložky budú umiestnené napravo od ich obsahu
  • tsTop-záložky budú umiestnené nad ich obsahom
  • RowWidth - šírka záložiek (tej časti s popisom)

Ale ako pridať tie položky? Čítajte ďalej! :-)

Kliknite na PageControl pravým tlačidlom a vyberte New Page. Vytvorí sa nová položka. Až ich takto vytvoríte viac, môžete medzi nimi prepínať buď pomocou pravého tlačidla a Next / Previous Page, alebo tak, že kliknete na vami zvolenú položku v ukážkovom okne, alebo ju zvolíte v Object Inspector v položke ActivePage. Potom čo ju máte zvolenú ,, kliknite na pole pod výberom položiek, kde búdou vami určené objekty. V Object Inspector sa zobrazí nové vlastnosti záložky, ktorá je typu TTabSheet:

  • Highlighted - má mať záložka modré pozadie jej popisku?
  • * ImageIndex - číslo obrázku zo zvoleného ImageListu ktorý sa má zobraziť vedľa popisku
  • PageIndex - číslo záložky, podľa ktorého sa záložky radí

A ako umiestniť na záložku objekty? Jednoducho! Zvolíte záložku a potom ich umiestnite rovnako ako do Panelu! Ešte vám poviem jeden tip a pustíme sa do príkladu! Ak robíte dlhý program, môžete si desať riadkov označiť (akoby takýto odkaz) a kedykoľvek sa k tomu riadku rýchlo vrátiť. Ako? Na určenom riadku kliknite pravým tlačidlom, vyberte Toggle Bookmarks a tam si zvoľte číslo odkazu (0-9). Odkaz sa vám zobrazí naľavo od textu. Ak zadáte to isté číslo inde, odkaz sa presunie tam. A ako nájsť odkaz späť? Tentoraz po stlačení pravého tlačítkom kliknite na Goto Bookmarks a tam vyberte číslo hľadaného odkazu. Delphi vás k nemu pošle!

Program

A teraz príklad: úbohý Napodobenina editor pre KP MAZE

OBJEKTY, KTORÉ BUDETE POTREBOVAŤ A ICH NASTAVENIE:

Form (to je to základné okno):

  • Caption = Bludisko
  • Name = Okno
  • Height = 380
  • Width = 312

StringGrid (to je tabuľka, ktorú sme spoznávali):

  • ColCount = 30
  • Color = clSilver
  • DefaultColWidth = 10
  • DefaultRowHeight = 10
  • FixedCols = 0
  • FixedRows = 0
  • GridLineWidth = 0
  • Heigt = 304
  • Left = 0
  • Name = Tabuľka
  • ROWCOUNT = 30
  • Scrollbars = ssNone
  • Top = 0
  • Width = 304

Button (to je tlačidlo):

  • Caption = Všade jenom múru
  • Height = 25
  • Left = 152
  • Name = VsudeZed
  • Top = 328
  • Width = 152

Button (to je tlačidlo):

  • Caption = Všade jenom zem
  • Height = 25
  • Left = 0
  • Name = VsudeZem
  • Top = 328
  • Width = 152

ColorBox (Additional vpravo):

  • Hint = Farba múrov
  • Left = 152
  • Name = Zed
  • Selected = clMaroon
  • ShowHint = True
  • Top = 304
  • Width = 152

ColorBox (Additional vpravo):

  • Hint = Farba podlahy
  • Left = 0
  • Name = Zem
  • Selected = clSilver
  • ShowHint = True
  • Top = 304
  • Width = 152

A teraz už len zdrojový kód (s trochou popiskov):
Najprv ale předdefinujte spoločnú premennú:

Zdi : array [0..29, 0..29] of Boolean;

A potom už môžete pracovať! Táto procedúra sa spustí pri vytvorení Okná:

procedure TOkno.FormCreate(Sender: TObject);
var X,Y : Integer;
begin
  for X := 0 to 29 do
    for Y := 0 to 29 do
      Zdi[X,Y] := False;
end;

Do každého políčka poľa Boolean zvaného Múry sa umiestni False (čo značí, že tam nie je stena). Ale ideme ďalej. Táto procedúra sa spustí pri vykresľovaní každého políčka tabuľky Tabuľka:

procedure TOkno.TabulkaDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
  begin
    if Zdi[ACol, ARow] then
      Tabulka.Canvas.Brush.Color := Zed.Selected else
      Tabulka.Canvas.Brush.Color := Zem.Selected;
    Tabulka.Canvas.Pen.Color := Tabulka.Canvas.Brush.Color;
    Tabulka.Canvas.Rectangle(Rect);
  end;

Ak je na súradniciach bunky v poli Múru True (to znamená, že je tu múr), nastaví sa farba výplne v Canvas, Tabuľky na rovnakú farbu, ako má ColorBox Zed. Inak sa farba nastaví podľa ColorBoxu Zem. Ďalej sa farba pera Canvas, Tabuľky zmení na tú istú, ako je výplň. A nakoniec sa onou farbou nakreslí obdĺžnik do políčka Tabuľky, ktoré sa práve vykresľuje. Tým program nekončí! Nejako sa musí určiť, kde budú múry a kde nie. Určíme to stlačením tlačidla myši na Tabuľke:

procedure TOkno.TabulkaMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
  var Sloupec, Radek : Integer;
  begin
    Tabulka.MouseToCell(X,Y,Sloupec,Radek);
    if ssLeft in Shift then
      Zdi[Sloupec,Radek] := True else
    if ssRight in Shift then
    begin
      Zdi[Sloupec,Radek] := False;
      Tabulka.Invalidate;
    end;
  end;

Najprv sme si předdefinovali Stĺpec a Radek a potom sme si do týchto integer vložili stĺpec a riadok tabuľky, kam sa stlačil (zistením zo súradníc myši). Ak bolo stlačené ľavé tlačidlo, miesto so súradnicami Stĺpec, Radek v poli Múry sa nastaví na True. Ak je stlačené pravé tlačidlo, bude to False (a Tabuľka sa prekreslí príkazom Invalidate). Tým sú splnené základné funkcie ale my, ako programátori si môžeme pohrať a urobiť program s viacerými možnosťami. A preto sme tiež vložili tie dva ColorBoxy. Tu máte spoločnú procedúru pre zmenu u oboch (štandardne sa tak menovať nebudú, ale ja som si to tak pre prehľadnosť pomenoval:

procedure TOkno.Change(Sender: TObject);
begin
  Tabulka.Invalidate;
  Tabulka.Color := Zem.Selected;
end;

Táto procedúra nám akurát prekreslí Tabuľku, aby sa zmenili farby a nastaví farbu Tabuľky na farbu stien. Tlačidlo VsudeZem po kliknutí vyvolá:

procedure TOkno.VsudeZemClick(Sender: TObject);
var X,Y : Integer;
begin
  for X := 0 to 29 do
    for Y := 0 to 29 do
      Zdi[X,Y] := False;
  Tabulka.Invalidate;
end;

A to vykoná zmenu všetkých políčok poľa na zem a Tabuľku prekreslí, aby bola zmena vidieť! A VsudeZed urobí:

procedure TOkno.VsudeZedClick(Sender: TObject);
var X,Y : Integer;
begin
  for X := 0 to 29 do
    for Y := 0 to 29 do
      Zdi[X,Y] := True;
  Tabulka.Invalidate;
end;

Je to vlastne opak VsudeZem. Všade v poli Múry budú True, čiže múry ... A aby sa nemuselo pre pokladanie a búranie múrov, opíšeme (dokopírujeme - nie sme zaostalci ... :-) ) Obsah procedúry TabulkaMouseDown do procedúry, ktorá sa spustí posuvom myši po Tabuľke:

  procedure TOkno.TabulkaMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
  var Sloupec, Radek: Integer;
  begin
    Tabulka.MouseToCell(X,Y,Sloupec,Radek);
    if ssLeft in Shift then
      Zdi[Sloupec,Radek] := True else
    if ssRight in Shift then
    begin
      Zdi[Sloupec,Radek] := False;
      Tabulka.Invalidate;
    end;
  end;

Howgh (alebo ako sa to píše !?) Domlu ... dopísal som! Ale vy neprestaňte! Teraz máte o dôvod viac! Programy, programy a návody k nim :-) ..

Delphi

 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 480x (241.21 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Delphi

 

Predchádzajúci článok
RES súbory a INI súbory
Všetky články v sekcii
Delphi
Preskočiť článok
(neodporúčame)
Doplnenie - While cyklus, Canvas a tlač
Článok pre vás napísal Kukensius
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Jméno: Lukáš Kučera alias Kukensius<br/> Narození: říjen 1987 (ve znamení vah)<br/> Bydliště: Jihlava, Česká Republika<br/> Studium: 1. ročník magisterského studia<br/> Škola: Vysoké učení technické v Brně<br/> Fakulta: Fakulta elektrotechniky ...
Aktivity