![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание записей на Делфи [D7]
Nastikk © (2006-12-01 20:57:00)Задачу эту я решила на Паскале( код внизу), но не знаю как теперь это перевести на Делфи. Мне говорили использовать stringgrid, я пыталась, но не получается. Если возможно покажите в коде программы, как это правильно сделать, но попроще. Я плохо в Делфи разбираюсь.
Задача:
Фамилия Имя Факультативы
Мат. Физ. Инф.
Павлов Серг true false true
Мисюченко Ира true true false
Сидорон Зоя false false true
Кладов Роман true false false
Создайте массив следующего содержания и структуры, выведите фамилии и имена школьников, которые не посещают факультатив по физике или по математике.
program nastya;
uses crt;
const n=2;
type st=record
fam,ima: string[20];
fiz,inf,mat:string[20];
end;
var
x: arrAy[1..n] of st;m:st;
i,j:integer;
begin
clrscr;
for i:=1 to n do begin
writeln('vvedite familiyu ');
readln(x[i].fam);
writeln('vvedite imya ');
readln(x[i].ima);
writeln('hodit na informatiku? ');
readln(x[i].inf);
writeln(' na fiziku ? ');
readln(x[i].fiz);
writeln(' na matematiku ? ');
readln(x[i].mat);
end;writeln('---------');
for i:=1 to 3 do
if (x[i].mat='net') or (x[i].fiz='net') then
with x[i] do
writeln(fam,' ',ima,' ');
readln;
END.
ProgRAMmer Dimonych (2006-12-02 11:41:00) [1]P.S. См. [6]
ProgRAMmer Dimonych (2006-12-02 11:40:00) [2]> TUser © (02.12.06 10:36) [9]
Вот и мы подумали: а зачем?
TUser (2006-12-02 10:36:00) [3]
> Имелось в виду, что в этих двух строках ячейкам присваиваются
> их собственные значения...
А зачем????
ProgRAMmer Dimonych (2006-12-02 00:14:00) [4]> StringGrid1.Cells[1,j]:= StringGrid1.Cells[1,j];
> StringGrid1.Cells[2,j]:= StringGrid1.Cells[2,j];
Имелось в виду, что в этих двух строках ячейкам присваиваются их собственные значения...
Nastikk (2006-12-02 00:10:00) [5]просто в сells как-то строки и ряды поменяны местами, не так как в Паскале.
Я додумала 2-ю кнопку сама:procedure TForm1.Button2Click(Sender: TObject);
var i,j:integer;
begin
for j:=2 to 3 do begin
for i:=1 to 4 do
begin
if (StringGrid1.Cells[3,j]= 'нет') or (StringGrid1.Cells[4,j]= 'нет') then
begin
StringGrid1.Cells[1,j]:= StringGrid1.Cells[1,j];
StringGrid1.Cells[2,j]:= StringGrid1.Cells[2,j];
StringGrid1.Cells[3,j]:= '';
StringGrid1.Cells[4,j]:= '';
StringGrid1.Cells[5,j]:= '';end;
if (StringGrid1.Cells[3,j]= 'да') and (StringGrid1.Cells[4,j]= 'да') then
begin
StringGrid1.Cells[1,j]:= '';
StringGrid1.Cells[2,j]:= '';
StringGrid1.Cells[3,j]:= '';
StringGrid1.Cells[4,j]:= '';
StringGrid1.Cells[5,j]:= '';
end;end;
end;
end;
Virgo_Style (2006-12-01 23:30:00) [6]Nastikk © (01.12.06 22:33) [5]
StringGrid1.Cells[1,j]:= StringGrid1.Cells[1,j];
StringGrid1.Cells[2,j]:= StringGrid1.Cells[2,j];
в код не вникал, но одни и те же индексы слева и справа несколько озадачивают
Nastikk (2006-12-01 22:33:00) [7]Вот что получилось . Я даже очистить могу,но не получается теперь вывести только фамилию и имя того, кто не посещал факультатив по математике или физике. (у меня иванов должен быть, а все остаются на месте или после очистик ничего не выводится ).Посмотрите пожалуйста Button2. Если Button1 записывают, тоже не работает.?
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
StringGrid1.Cells[1,1] := 'Фамилия ';
StringGrid1.Cells[2,1] := 'Имя';
StringGrid1.Cells[3,1] := 'математика';
StringGrid1.Cells[4,1] := 'физика';
StringGrid1.Cells[5,1] := 'информатика';
StringGrid1.Cells[1,2] := 'Иванов';
StringGrid1.Cells[2,2] := 'Коля';
StringGrid1.Cells[3,2] := 'да';
StringGrid1.Cells[4,2] := 'да';
StringGrid1.Cells[5,2] := 'нет';
StringGrid1.Cells[1,3] := 'Петров';
StringGrid1.Cells[2,3] := 'Вася';
StringGrid1.Cells[3,3] := 'да';
StringGrid1.Cells[4,3] := 'да';
StringGrid1.Cells[5,3] := 'да';
end;
procedure TForm1.Button2Click(Sender: TObject);
var i,j:integer;
begin
for j:=2 to 3 do begin
for i:=1 to 4 do
if (StringGrid1.Cells[3,j]= 'нет') or (StringGrid1.Cells[4,j]= 'нет') then
StringGrid1.Cells[1,j]:= StringGrid1.Cells[1,j];
StringGrid1.Cells[2,j]:= StringGrid1.Cells[2,j];
end;end;
procedure TForm1.Button3Click(Sender: TObject);
var i,j:integer;
begin
for j:=2 to 3 do begin
for i:=1 to 4 do
StringGrid1.Cells[1,j]:='';
StringGrid1.Cells[2,j]:= '';
StringGrid1.Cells[3,j] := '';
StringGrid1.Cells[4,j] := '';
StringGrid1.Cells[5,j] := '';end;
end;
end.
ProgRAMmer Dimonych (2006-12-01 21:24:00) [8]По условию задачи, кстати, использовать TStringGrid необязательно. Можно содержимое записи выводить тем же MessageBox'ом при случае.
Джо (2006-12-01 21:23:00) [9]> Пожалуйста покажите этот кусочек ввода записей в делфи.
StringGrid1.Cells[2,3] := 'мама мыла раму';
Этот код выводит в ячейке 2;3 экземпляра TStringGrid'а слова из букваря.
На форму нужно положить этот самый компонент.
Nastikk (2006-12-01 21:21:00) [10]Спасибо за подробный ответ. F1 не работает, а как этот stringgrid записать правильно, чтобы записи вводились не знаю. Я даже не знаю, где писать, на форме в этом stringgrid или как-то задавать программно присвоением мои записи? Пожалуйста покажите этот кусочек ввода записей в делфи. как он в коде выглядит?
Джо (2006-12-01 21:07:00) [11]У TStringGrid есть свойство Cells[x,y] в котором можно задать содержимое ячейки с коорднатами X и Y (по горизонтали и вертикали, соответственно). Прямо как в Excel. Проще, кажется, некуда. Еще учитывать, что есть два свойства ColCount и RowCount, в которых задается кол-во столбцов и строк в таблице, соответственно. Ну, и еще есть F1, ежели где будет затык :)