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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2012, 14:20   #1
chamchum
 
Регистрация: 02.05.2012
Сообщений: 4
По умолчанию Использование Canvas в другом Unit'е

Здравствуйте. Я начинающий программист, который пытается разобраться с модулями.
Передо мной встала задача: написать подобие clrscr в отдельном модуле.
Нигде не смог найти пример, как правильно подключить Graphics к Unit2, который будет выполнять примерно следующую операцию:

Код:
procedure TMyFunc.clrscr;
begin
  Canvas.Pen.Color:=clBlack;
  Canvas.Brush.Color:=clWhite;
  Canvas.Rectangle(5,5,MyForm.ClientWidth-5,MyForm.ClientWidth-5);
end;
Эта процедура будет вызываться в юните Main.
Пробовал всякое =) Не стану приводить все извращенства тут.

Последний раз редактировалось chamchum; 02.05.2012 в 14:22.
chamchum вне форума Ответить с цитированием
Старый 02.05.2012, 15:56   #2
chamchum
 
Регистрация: 02.05.2012
Сообщений: 4
По умолчанию

Сделал так:

Код:
unit MyFunc;

interface

uses Windows;

procedure clrscr;

implementation

uses Main;

procedure clrscr;
begin
  SetDCPenColor(MyForm.Canvas.Handle,0);
  SetDCBrushColor(MyForm.Canvas.Handle,1);
  Rectangle(MyForm.Canvas.Handle,5,5,MyForm.ClientWidth-5,MyForm.ClientHeight-5);
end;

end.
Не хорошо на душе. Оно компилится, работает... но как-то, вроде, на костылях. Я прав?
chamchum вне форума Ответить с цитированием
Старый 02.05.2012, 16:24   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А почему бы Canvas и размеры клиентской области параметрами не передать? Тогда не будет жесткой привязки к конкретной форме
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 02.05.2012 в 16:28.
Аватар вне форума Ответить с цитированием
Старый 02.05.2012, 16:42   #4
chamchum
 
Регистрация: 02.05.2012
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А почему бы Canvas и размеры клиентской области параметрами не передать? Тогда не будет жесткой привязки к конкретной форме
Передать размеры клиентского окна не проблема.
Вопрос, как передать canvas? С этим я мучаюсь.
До меня туго пока доходит, сколько бы я не читал. Хотелось бы примеров.
chamchum вне форума Ответить с цитированием
Старый 02.05.2012, 17:27   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
procedure clrscr(Canvas: TCanvas; ClientWidth,ClientHeight: Integer);

Вызов из метода формы:

uses MyFunc;
...
clrscr(Canvas,ClientWidth,ClientHeight);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.05.2012, 17:43   #6
chamchum
 
Регистрация: 02.05.2012
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
procedure clrscr(Canvas: TCanvas; ClientWidth,ClientHeight: Integer);

Вызов из метода формы:

uses MyFunc;
...
clrscr(Canvas,ClientWidth,ClientHeight);
Спасибо большое за помощь. Надеюсь в один день смогу написать что-то стОящее =)
Сложно без посторонней помощи с головой лезть в омут модулей, указателей и потоков.
chamchum вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi 7. Почему на одном компе содержимое Image1.Canvas выводится на принтер, а на другом нет? KarlMarks Помощь студентам 0 11.12.2011 23:01
Использование Canvas ~Psycho~ Мультимедиа в Delphi 3 02.04.2011 09:38
Поиск на другом листе agregator Microsoft Office Excel 8 25.12.2010 19:41
запуск на другом компьютере kaljan775 Общие вопросы C/C++ 3 07.12.2010 15:40
Переписать в другом порядке... Иван=) Помощь студентам 3 16.11.2010 10:54