Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.01.07;
Скачать: [xml.tar.bz2];

Вниз

как правильно создать процедуру?   Найти похожие ветки 

 
jonson35   (2006-12-17 13:40) [0]

Здравствуйте, подскажите что в коде не так

procedure rect_pr;
var
 x1,y1,x2,y2: Integer;
 r1: TRect;
 Image1:TImage;
begin
x1:=0;
y1:=0;
x2:=y1+100;
y2:=x1+100;
r1:=Rect(x1,y1,x2,y2);
with Image1.Canvas do
  begin
    Brush.Color:=clWhite;
    FillRect(r1);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
rect_pr;
end;

при компиляции выдет ошибку
[Warning] Unit1.pas(38): Variable "Image1" might not have been initialized
почему?
А при нажатии Button1 вообще вылетает все.

И как написать правильно, чтоб можно было передавать в процедуру x1,y1,x2,y2

Не пинайте новичка сильно :)


 
EvS ©   (2006-12-17 13:50) [1]

Image1 перед использованием нужно создать


 
MBo ©   (2006-12-17 13:52) [2]

Что должна делать процедура?


 
sniknik ©   (2006-12-17 13:54) [3]

> при компиляции выдет ошибку
> [Warning] Unit1.pas(38): Variable "Image1" might not have been initialized
> почему?
процедура регулярная, а обращаешься к обьекту класса без указания его. естественно не находит.
тут либо указать полный путь (Form1.Image1.Canvas), либо сделать процедуру от того же класса что имедж (procedure Form1.rect_pr;) что гораздо более правильно.

> И как написать правильно, чтоб можно было передавать в процедуру x1,y1,x2,y2
встаешь на написанное слово procedure курсором и нажимаеш Ctrl+F1, читаешь. (это кстати для всего рецепт, не только по procedure)


 
jonson35   (2006-12-17 14:03) [4]

> либо указать полный путь (Form1.Image1.Canvas)
спасибо помогло
> > И как написать правильно, чтоб можно было передавать в
> процедуру x1,y1,x2,y2
> встаешь на написанное слово procedure курсором и нажимаеш
> Ctrl+F1, читаешь. (это кстати для всего рецепт, не только

по Ctrl+F1 у меня другая прога запускается, как еще это посмотреть можно


 
sniknik ©   (2006-12-17 14:21) [5]

> спасибо помогло
хм... из двух предложенных это худший вариант, и вроде бы сказал это.

> по Ctrl+F1 у меня другая прога запускается, как еще это посмотреть можно
убери у нее эти клавиши быстрого запуска... либо запускай хелп любым доступным тебе способом (из меню например, а то может и F1 занято) и делай поиск слова procedure там, раз уж контекстную возможность с поиском "отрубил".


 
Anatoly Podgoretsky ©   (2006-12-17 14:45) [6]

> jonson35  (17.12.2006 13:40:00)  [0]

Две ошибки.

Первая - процедура не нужна, поскольку ничего не делает
Об второй сообщил компилятор - не инициализирован Image1


 
RASkov   (2006-12-17 23:27) [7]

> И как написать правильно, чтоб можно было передавать в процедуру
> x1,y1,x2,y2

procedure rect_pr(Im: TImage; const x1, x2, y1, y2: Integer; const clr: TColor);
begin
 if not Assigned(Im) then Exit;
 Im.Canvas.Brush.Color:= clr;
 Im.Canvas.FillRect(Rect(x1, y1, x2, y2));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 rect_pr(Image1, 0, 0, 100, 100, clWhite);
end;


Это самое ужасное, что можно придумать... только в качестве, может быть неудачного, примера.
Т.е. как заметил  [6] Anatoly Podgoretsky
> процедура не нужна, поскольку ничего не делает



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

Форум: "Начинающим";
Текущий архив: 2007.01.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.017 c
15-1166104582
ArtemESC
2006-12-14 16:56
2007.01.07
Как перевести на русский название произведения...


15-1166278074
Loginov Dmitry
2006-12-16 17:07
2007.01.07
Matrix32


2-1166168671
sanich
2006-12-15 10:44
2007.01.07
Сообщение из dll


15-1166515691
vidiv
2006-12-19 11:08
2007.01.07
реклама в бесплатном хостинге


11-1143429106
sff
2006-03-27 07:11
2007.01.07
полосы прокрутки для scrollbox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский