Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2009, 03:22   #1
Cesmir
Пользователь
 
Регистрация: 30.12.2008
Сообщений: 16
По умолчанию добавление кнопки для определения максимального значения в столбце (дополнение к готовой работе))

Здравствуйте уважаемые Програмисты.
нажна помощь с курсовой
зарание спасибо.
есть готовая работа(лабораторная),
паролный вход; потом в таблице выдаются случайные числа, снизу сумарное значение каждого из столбцов.
нужно добавить кнопку (или ещё какойнибудь способ) чтобы при нажатии, красным отображался столбец с максимальным значением.

спасибо.
Cesmir вне форума Ответить с цитированием
Старый 10.01.2009, 03:23   #2
Cesmir
Пользователь
 
Регистрация: 30.12.2008
Сообщений: 16
По умолчанию

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, ExtCtrls, Menus, Grids, Buttons, Math;

type
TForm1 = class(TForm)
MaskEdit1: TMaskEdit;
Label1: TLabel;
Button1: TButton;
StringGrid1: TStringGrid;
Label2: TLabel;
ComboBox1: TComboBox;
Label5: TLabel;
ListBox1: TListBox;
StringGrid2: TStringGrid;

//procedure RadioGroup1Click(Sender: TObject);

procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
// procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
procedure StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);


procedure rashet();
// procedure MyPaint();

// procedure FormPaint(Sender: TObject);
// procedure MaskEdit1KeyPress(Sender: TObject; var Key: Char);
procedure StringGrid1Exit(Sender: TObject);


procedure ComboBox1Change(Sender: TObject);
// procedure FormKeyPress(Sender: TObject; var Key: Char);
// procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
procedure ListBox1Click(Sender: TObject);
procedure FormResize(Sender: TObject);






private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
summ, min1, pass1, shet, i, j: integer;
mas: array of integer;
ris: boolean;
pass2, pass3: string;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin
if pass2 = maskedit1.text then
begin
shet:=0;

button1.Visible:=false;
Label1.Visible:=false;
MaskEdit1.Visible:=false;
Label5.Visible:=false;

Label2.Visible:=true;
ComboBox1.Visible:=true;
StringGrid1.Visible:=true;
StringGrid2.Visible:=true;
ListBox1.Visible:=True;


end;
shet:=shet+1;
if shet=3 then
close;
end;





procedure TForm1.ComboBox1Change(Sender: TObject);
begin
StringGrid1.ColCount:=ComboBox1.Ite mIndex+9;
StringGrid1.DefaultColWidth:=trunc( 322/(ComboBox1.ItemIndex+9));

StringGrid2.ColCount:=ComboBox1.Ite mIndex+9;
StringGrid2.DefaultColWidth:=trunc( 322/(ComboBox1.ItemIndex+9));
rashet();
end;

{procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
key := Chr(0);
MyPaint();
end
else
key := Chr(0);
end; }

procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.ItemIndex:=2;
randomize();
pass2:='12345678';
i:=0;

while i<8 do
begin
pass1:= random(10);
pass3:=inttostr(pass1);
pass2[8-i]:=pass3[1];

label5.Caption:=label5.Caption+' '+inttostr(pass1);
i:=i+1;
end;

//MaskEdit1.Text:=pass2;
i:=0;
while i<StringGrid1.rowCount do
begin
j:=0;
while j<StringGrid1.ColCount do
begin
stringgrid1.Cells[j,i]:=inttostr(random(101));
j:=j+1;
end;
i:=i+1;
end;
rashet();
end;

{procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
MyPaint();
end;
end; }

{procedure TForm1.FormPaint(Sender: TObject);
begin
if ris then
MyPaint();
end; }

{procedure TForm1.MaskEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
Button1Click(self);
end;}
Cesmir вне форума Ответить с цитированием
Старый 10.01.2009, 03:23   #3
Cesmir
Пользователь
 
Регистрация: 30.12.2008
Сообщений: 16
По умолчанию

продолжение..


{procedure TForm1.MyPaint();
begin
j:=0;
ris:=true;


while j<StringGrid2.RowCount do
begin
//if min1=strtoint(stringgrid2.Cells[0,j]) then
//begin
stringgrid1.Canvas.Brush.Style:= bsClear;
//stringgrid1.Canvas.Pen.Color:=clblu e;
//stringgrid1.Canvas.Pen.Width:=3;
//stringgrid1.Canvas.Rectangle(0,(str inggrid1.DefaultRowHeight+1)*j,stri nggrid1.Width-5, (stringgrid1.DefaultRowHeight+1)*(j +1)-2);

//stringgrid2.Canvas.Brush.Style:= bsClear;
//stringgrid2.Canvas.Pen.Color:=clblu e;
//stringgrid2.Canvas.Pen.Width:=3;
//stringgrid2.Canvas.Rectangle(0,(str inggrid1.DefaultRowHeight+1)*j,stri nggrid2.Width-5, (stringgrid1.DefaultRowHeight+1)*(j +1)-2);

//end;
j:=j+1;
end;
end; }



{procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
StringGrid1.RowCount:=RadioGroup1.I temIndex+9;
StringGrid1.Height:=19*(RadioGroup1 .ItemIndex+9)+3;

StringGrid2.RowCount:=RadioGroup1.I temIndex+9;
StringGrid2.Height:=19*(RadioGroup1 .ItemIndex+9)+3;


rashet();
end;}


procedure TForm1.StringGrid1Exit(Sender: TObject);
begin
rashet();
end;

{procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin

case Key of
#8,'0'..'9': ; // цифры и <Backspace>

#13: // клавиша <Enter>
begin
MyPaint();
end;

else // остальные символы запрещены
key := Chr(0);

end; }



//end;

procedure Tform1.rashet();

begin
j:=0;
//ris:=false;
SetLength(Mas, StringGrid1.ColCount);

while j<StringGrid1.ColCount do
begin
i:=0;
summ:=0;
while i<StringGrid1.RowCount do
begin
if stringgrid1.Cells[j,i]='' then
stringgrid1.Cells[j,i]:='0';
//if int(strtoint(stringgrid1.Cells[i,j])/2)=strtoint(stringgrid1.Cells[i,j])/2 then
summ:=summ+strtoint(stringgrid1.Cel ls[j,i]);

i:=i+1;
end;

mas[j]:= summ;
stringgrid2.Cells[j,0]:=inttostr(summ);
j:=j+1;
end;

min1:=MaxIntValue (mas);


stringgrid1.Refresh;
stringgrid2.Refresh;
end;

procedure TForm1.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
rashet();
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
StringGrid1.RowCount:=ListBox1.Item Index+9;
StringGrid1.Height:=19*(ListBox1.It emIndex+9)+3;

// StringGrid2.RowCount:=ListBox1.Item Index+9;
// StringGrid2.Height:=19*(ListBox1.It emIndex+9)+3;


rashet();
end;

procedure TForm1.FormResize(Sender: TObject);
begin
j:=0;
ris:=true;


while j<StringGrid2.ColCount do
begin
if min1=strtoint(stringgrid2.Cells[j,0]) then
begin
stringgrid1.Canvas.Brush.Style:= bsClear;
stringgrid1.Canvas.Pen.Color:=clRed ;
stringgrid1.Canvas.Pen.Width:=3;
stringgrid1.Canvas.Rectangle((strin ggrid1.DefaultColWidth+1)*j,1,strin ggrid1.DefaultColWidth+(stringgrid1 .DefaultColWidth+1)*j,stringgrid1.H eight-4);

stringgrid2.Canvas.Brush.Style:= bsClear;
stringgrid2.Canvas.Pen.Color:=clRed ;
stringgrid2.Canvas.Pen.Width:=3;
stringgrid2.Canvas.Rectangle((strin ggrid1.DefaultColWidth+1)*j,1,strin ggrid1.DefaultColWidth+(stringgrid1 .DefaultColWidth+1)*j,20);

end;
j:=j+1;
end;
end;

end.
Cesmir вне форума Ответить с цитированием
Старый 10.01.2009, 11:51   #4
Cesmir
Пользователь
 
Регистрация: 30.12.2008
Сообщений: 16
По умолчанию

Cesmir вне форума Ответить с цитированием
Старый 10.01.2009, 19:57   #5
Rozalinda
Пользователь
 
Аватар для Rozalinda
 
Регистрация: 11.01.2007
Сообщений: 54
По умолчанию

посмотрю сегодня, напишу ))
нашедшего выход - затаптывают
Rozalinda вне форума Ответить с цитированием
Старый 11.01.2009, 00:40   #6
Rozalinda
Пользователь
 
Аватар для Rozalinda
 
Регистрация: 11.01.2007
Сообщений: 54
По умолчанию

все, я в конец запуталась в обилии закомментированного (
и плохо уже понимаю, что тут было исправлено по сравнению с первым вариантом
нашедшего выход - затаптывают
Rozalinda вне форума Ответить с цитированием
Старый 11.01.2009, 01:09   #7
Cesmir
Пользователь
 
Регистрация: 30.12.2008
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Rozalinda Посмотреть сообщение
все, я в конец запуталась в обилии закомментированного (
и плохо уже понимаю, что тут было исправлено по сравнению с первым вариантом
Ну вообще у меня было 2 похожих работы..

ту что ты мне 1 делала. я успешно сдал! за ето спасибо огромное.
Но в ней мне надо было переделать парольный вход.
я из первой работы то значение что ты мне писала (200-100?&) или както так (чтоб числа рандом от -100 до100), вобщем я вставил это во вторую работу. которая анологичная только прокрутки нет.
вообщем вот. и к этой работе которая 2 , код которой я тут написал, и нужно сделать чтобы красным отображался столбец с максимальным значением.
вот както так...
Cesmir вне форума Ответить с цитированием
Старый 11.01.2009, 09:23   #8
Rozalinda
Пользователь
 
Аватар для Rozalinda
 
Регистрация: 11.01.2007
Сообщений: 54
По умолчанию

парольный вход для меня роли не играет.
я могу дописать прошлую, она хотя бы компилировалась )
напишу с комментариями, надеюсь, сможешь вставить в свою. вечером (моим вечером +4 к Москве) напишу, хорошо?
нашедшего выход - затаптывают
Rozalinda вне форума Ответить с цитированием
Старый 11.01.2009, 16:07   #9
Cesmir
Пользователь
 
Регистрация: 30.12.2008
Сообщений: 16
Лампочка Спсибо огромное правда...

Спсибо , я нашел способ сдать, так что получается отбой..

очень благодарен, что отозвалась.!
Cesmir вне форума Ответить с цитированием
Старый 11.01.2009, 16:08   #10
Rozalinda
Пользователь
 
Аватар для Rozalinda
 
Регистрация: 11.01.2007
Сообщений: 54
По умолчанию

значит так, добавляем переменную
numcol: integer, которой в процедуре TForm1.Create присваиваем значение -1

вторую кнопку на форму, в обработчике на нее:
Код:
procedure TForm1.Button2Click(Sender: TObject);
var i,j,max,sumcol: integer;
begin
    max := StrToInt(StringGrid1.Cells[0,0]);
    for i := 0 to StringGrid1.ColCount-1 do
    begin
      sumcol := StrToInt(stringgrid1.Cells[i,1]);
      for j := 0 to StringGrid1.RowCount-1 do
        sumcol := sumcol + StrToInt(StringGrid1.Cells[i,j]);
      if sumcol > max then
      begin
        max := sumcol;
        numcol := i;
      end;
    end;
    StringGrid1.Refresh;
    Button2.Caption := IntToStr(numcol+1);
end;
добавляем еще одну процедуру для StringGrid:
Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if numcol <> -1 then
    if ACol = numcol then
      with TStringGrid(Sender), Canvas do
      begin
        Brush.Color := clRed;
        FillRect(Rect);
        TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Cells[aCol, aRow]);
      end;
end;
И не забываем поставить Visible для Button2 = false, а процедуре Buttpn1.Click среди прочих поменять на true.

Вот. Вроде ничё не забыла
нашедшего выход - затаптывают
Rozalinda вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для определения CPU netsky2004 Паскаль, Turbo Pascal, PascalABC.NET 0 10.01.2009 02:07
Добавление кнопки.... Xander Общие вопросы Delphi 3 09.06.2008 12:39
Считывание из файла, для определения кодировки Arteom Общие вопросы Delphi 6 04.05.2008 10:11
Суммирование значений и выведения максимального значения Bor_man Microsoft Office Excel 2 12.04.2007 19:49