Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.17;
Скачать: CL | DM;

Вниз

Создание записей на Делфи   Найти похожие ветки 

 
Nastikk ©   (2006-12-01 20:57) [0]

Задачу эту я решила на Паскале( код внизу), но не знаю как теперь это перевести на Делфи. Мне говорили использовать 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.


 
Джо ©   (2006-12-01 21:07) [1]

У TStringGrid есть свойство Cells[x,y] в котором можно задать содержимое ячейки с коорднатами X и Y (по горизонтали и вертикали, соответственно). Прямо как в Excel. Проще, кажется, некуда. Еще учитывать, что есть два свойства ColCount и RowCount, в которых задается кол-во столбцов и строк в таблице, соответственно. Ну, и еще есть F1, ежели где будет затык :)


 
Nastikk ©   (2006-12-01 21:21) [2]

Спасибо за подробный ответ. F1 не работает, а как этот stringgrid записать правильно, чтобы записи вводились не знаю. Я даже не знаю, где писать, на форме  в этом stringgrid или как-то задавать программно присвоением мои записи? Пожалуйста покажите этот кусочек ввода записей  в делфи.  как он в коде выглядит?


 
Джо ©   (2006-12-01 21:23) [3]

> Пожалуйста покажите этот кусочек ввода записей  в делфи.

StringGrid1.Cells[2,3] := "мама мыла раму";

Этот код выводит в ячейке 2;3 экземпляра TStringGrid"а слова из букваря.
На форму нужно положить этот самый компонент.


 
ProgRAMmer Dimonych ©   (2006-12-01 21:24) [4]

По условию задачи, кстати, использовать TStringGrid необязательно. Можно содержимое записи выводить тем же MessageBox"ом при случае.


 
Nastikk ©   (2006-12-01 22:33) [5]

Вот что получилось . Я даже очистить могу,но не получается теперь вывести только фамилию и имя того, кто не посещал факультатив по математике или физике. (у меня иванов должен быть, а все остаются на месте или после очистик ничего не выводится ).Посмотрите  пожалуйста 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.


 
Virgo_Style ©   (2006-12-01 23:30) [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-02 00:10) [7]

просто в с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;


 
ProgRAMmer Dimonych ©   (2006-12-02 00:14) [8]

> StringGrid1.Cells[1,j]:= StringGrid1.Cells[1,j];
> StringGrid1.Cells[2,j]:= StringGrid1.Cells[2,j];
Имелось в виду, что в этих двух строках ячейкам присваиваются их собственные значения...


 
TUser ©   (2006-12-02 10:36) [9]


> Имелось в виду, что в этих двух строках ячейкам присваиваются
> их собственные значения...

А зачем????


 
ProgRAMmer Dimonych ©   (2006-12-02 11:40) [10]

> TUser ©   (02.12.06 10:36) [9]
Вот и мы подумали: а зачем?


 
ProgRAMmer Dimonych ©   (2006-12-02 11:41) [11]

P.S. См. [6]



Страницы: 1 вся ветка

Текущий архив: 2006.12.17;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.038 c
15-1164352122
Цитатник
2006-11-24 10:08
2006.12.17
Разработка программ группами программистов.


2-1164620173
bablja
2006-11-27 12:36
2006.12.17
Округление


15-1164309547
Kolan
2006-11-23 22:19
2006.12.17
Под какие цели искать сотрудников.


1-1162214256
Acme
2006-10-30 16:17
2006.12.17
Как написать в поле Label нижний индекс


2-1164646397
Алик
2006-11-27 19:53
2006.12.17
Мигание TPaintBox при перерисовке Canvas