Wypełnianie StringGrida.

0

Witam. Mam problem z utworzeniem tabeli (stringgrid). Nie wiem dlaczego ten kod nie działa.

type
  TForm5 = class(TForm)
    StringGrid1: TStringGrid;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form5: TForm5;

implementation

{$R *.dfm}


procedure TForm5.FormCreate(Sender: TObject);
begin
  StringGrid1.Cells[0,0]:='kolumna 1';
  StringGrid1.Cells[1,0]:='kolumna 2';
  StringGrid1.Cells[2,0]:='kolumna 3';
  StringGrid1.Cells[3,0]:='kolumna 4';
  StringGrid1.Cells[4,0]:='kolumna 5';



end; 
0

Co to znaczy nie działa? Jest jakiś komunikat błędu? I czy zdarzenie OnCreate na pewno jest przypisane tej formatce?

0

dodaj na początku:
StringGrid1.ColCount:=5;
StringGrid1.RowCount:=N;

0

nie ma żadnych błędów, po prostu w pierwszym wierszu powinno pojawić się kolejno "kolumna1" , "kolumna 2" ... "kolumna 5", za to wiersz pozostaje pusty

edit: jak wejdę sobie w opcje tego Stringgrida, potem Events (używam XE 2) i zaznaczę opcję OnClick --> FormCreate, wtedy po uruchomieniu i kliknięci na tabelkę pojawiają się pożądane dane, jednak chciałbym, żeby tak się działo zaraz po odpaleniu programu.

0

Umieść dla pewności komponent jeszcze raz na formatce, bo może coś pomieszałeś we własności Options. Poza tym warto zastosować się do porady @_13th_Dragon i upewnij się jak pisałem czy Inspectorze Objectów na pewno zdarzenie OnCreate jest przypisane do formatki. Jeżeli tak to musi zadziałać.

0
olesio napisał(a):

Umieść dla pewności komponent jeszcze raz na formatce, bo może coś pomieszałeś we własności Options. Poza tym warto zastosować się do porady @_13th_Dragon i upewnij się jak pisałem czy Inspectorze Objectów na pewno zdarzenie OnCreate jest przypisane do formatki. Jeżeli tak to musi zadziałać.

A może po prostu W czasie Callbacku OnCreate Stringgrid nie jest jeszcze zainicjalizowany?

0

Może i tak jest. U mnie taki kod zadziałał. Tylko, że pod Delphi. Oczywiście aby spowodować ciągle zgadywanie, pytający nie sprecyzował jakie to IDE. Chociaż wątpie, żeby pod Lazarusem taki problem występował, ale może i coś jest na rzeczy.

0

ok, działa, po prostu zaznaczyłem procedure FormCreate w OnEnter w object creatorze, jednak w programie na którym się uczę (po prostu patrzę co sie stanie jak wywalę to, a jak zamienię inne coś) nie było tego OnEnter i działało mimo to.

0

No to tak jak podejrzewałem. A standardowa formatka klasy TForm nie posiada zdarzenia OnEnter. I jeżeli dane zdarzenie nie jest powiązane z komponentem gdzieś w kodzie w sposób dynamiczny ani nie jest ustawione w Object Inspectorze to kod zawarty w takim zdarzeniu się oczywiście nie wykona.

0

to jest jakiś prosty sposób, żeby tabela od razu pojawiła się wypełniona? tzn, żeby instrukcje wypełnienia tabeli wykonały się natychmiast. Bo niestety gdy dodałem kilka przycisków w programie to opcja OnEnter w StringGridzie wykonuje sie dopiero po kliknięciu na tabelę.

0

Nie wiem co dokładnie chcesz osiągnąc, ale jeżeli chcesz wypełnić szybko StringGrid to wykonując kod w OnClick jakiegoś buttona na przykład to Ci wypełni tak, jak zakodujesz.

0

No tak, ale tabela wtedy wypełni się po klinięciu buttona, a chciałbym żeby pojawiła się już wypełniona. Tzn odpalam program i mam tabelę z nagłówkami, np imię, nazwisko, cośtam, cośtam. No i wolałbym, żeby to nie były nagłówki typu Label. Później będę dodawał sobie do tej tabelki nowe rekordy, edytował je itd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1