Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание записей на Делфи [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, ежели где будет затык :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо