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

Вниз

В моем классе не видно...   Найти похожие ветки 

 
Kick   (2007-11-11 18:01) [0]

Создал класс:
 TMolec = class (TForm) ...

В одном из методов нужно обратиться к Screen.Canvas.
Но этого нельзя сделать.
Форма объявлена так:
 TForm1 = class(TForm)
   Button1: TButton;
   Screen: TPaintBox;
   procedure Button1Click(Sender: TObject);
 private
 public
 end;

Подскажите, пожалуйста, что изменить?


 
DVM ©   (2007-11-11 18:04) [1]

Где такая трава растет? А? Что в твоем классе не видно? И как это связано с  соверешенно другим классом TForm1 ?


 
Kick   (2007-11-11 18:10) [2]


> Где такая трава растет? А? Что в твоем классе не видно?
> И как это связано с  соверешенно другим классом TForm1 ?
>


Вот именно. Мне нужно получить доступ из моего класса к совершенно другому классу, а именно к классу TForm. А ещё точнее к Screen.Canvas/


 
DVM ©   (2007-11-11 18:14) [3]


> А ещё точнее к Screen.Canvas

Screen.Canvas никаким боком не относится ни к TForm, ни к TForm1, ни к TMolec.


 
Petr V. Abramov ©   (2007-11-11 18:14) [4]

что не компилится?


 
Anatoly Podgoretsky ©   (2007-11-11 18:15) [5]

> DVM  (11.11.2007 18:14:03)  [3]

И это не класс.


 
DVM ©   (2007-11-11 18:15) [6]

Screen: TScreen - это глобальная переменная в модуле Forms


 
Kick   (2007-11-11 18:18) [7]


> что не компилится?

да.
В моем классе, в созданном мной методе пишу:
Screen.
А в выпадающем списке нет Canvas.

Если сам пишу Screen.Canvas то при компиляции выдается ошибка:
[Error] Unit1.pas(57): Undeclared identifier: "canvas"


 
DVM ©   (2007-11-11 18:20) [8]


> А в выпадающем списке нет Canvas.

:)


 
DVM ©   (2007-11-11 18:20) [9]

У класса TScreen нет канвы.


 
Kick   (2007-11-11 18:34) [10]

Все понял.
Я изменил название Screen, на первоначальное PaintBox1.

Но из моего класса я все равно не могу обратиться к PaintBox1.


 
Anatoly Podgoretsky ©   (2007-11-11 18:37) [11]

В твоем классе нет PaintBox1


 
DVM ©   (2007-11-11 18:40) [12]

Сказка про белого бычка


 
Kick   (2007-11-11 18:42) [13]


> В твоем классе нет PaintBox1


В моем классе нет. А в классе TForm есть. Сначала он назывался Screen, но в связи с существованием такого имени, я изменил его на перваначальное - PaintBox1.
Теперь пишу в своем классе, в своем методе PaintBox1, но его не видно!!


 
DVM ©   (2007-11-11 18:45) [14]

-Ты тут под фонарем ползаешь?
-Да вон там я ключи потерял.
-Так ищи там, а не здесь!
-Так здесь светлее.


> Kick   (11.11.07 18:42) [13]


> Теперь пишу в своем классе, в своем методе PaintBox1, но
> его не видно!!

Почему его собственно должно быть видно?


 
Kick   (2007-11-11 18:47) [15]


> Почему его собственно должно быть видно?

Ну мне нужно чтобы его было видно!
Может изменить там private или public?
я просто не знаю


 
DVM ©   (2007-11-11 18:48) [16]


> Ну мне нужно чтобы его было видно!

А что мешает перенести его в свой класс?

У тебя есть в коде создание хоть одного экземпляра класса TForm1 ?


 
Kick   (2007-11-11 18:52) [17]

Если я переношу к себе PaintBox1, тогда его не видно в процедуре:
procedure TForm1.Button1Click(Sender: TObject);

а мне нужно чтобы там  и там было видно!
> У тебя есть в коде создание хоть одного экземпляра класса
> TForm1 ?


А форма же сама создается... или это не то?


 
DVM ©   (2007-11-11 18:58) [18]


> А форма же сама создается...

Ну если сама:

Пиши в своем классе form1.PaintBox1.Canvas ... Только так не хорошо имей ввиду.


 
DVM ©   (2007-11-11 18:58) [19]


> Kick  

Что твой класс делать то должен?


 
Anatoly Podgoretsky ©   (2007-11-11 19:00) [20]


> Что твой класс делать то должен?

Работать


 
Kick   (2007-11-11 19:02) [21]

Мой класс должен рисовать на PointBox1.Canvas, а в классе TForm тоже нужно рисовать на PaintBox1.Canvas.


 
DVM ©   (2007-11-11 19:04) [22]


> Мой класс должен рисовать на PointBox1.Canvas

почему это должен быть именно класс?


 
Kick   (2007-11-11 19:06) [23]

Класс TPaintBox нужно объявить либо в моем классе либо в классе TForm.
Если я его объявлю в моем классе, то из класса TForm его не видно.
Если я его объявлю в классе TForm, то его не видно из моего класса.
А рисовать на PaintBox1.Canvas нужно оттуда и оттуда


 
DVM ©   (2007-11-11 19:07) [24]


> Kick

Рисовать вообще то надо в обработчике OnPaint PaintBox-а иначе все нарисованное будет затираться.


 
DVM ©   (2007-11-11 19:08) [25]


> Kick   (11.11.07 19:06) [23]

Это мы уже слышали.
На этом PaintBox1 должен рисовать только один экземпляр твоего класса или их много будет?


 
DVM ©   (2007-11-11 19:10) [26]

А вообще, обрисуй конечную задачу - что программа должна делать. Только не надо пересказывать еще раз [23]


 
Kick   (2007-11-11 19:49) [27]

Экземплятор будет много.


 
Che Vingam   (2007-11-11 21:08) [28]

У меня седня настроение хорошее, дам сеанс телепатии :-)

TMolec = class (TObject)
...
public
 procedure Draw(Canvas : TCanvas);
...
end;

...

procedure TForm1.FormPaint(Sender: TObject);
begin
 AMolec.Draw(Screen.Canvas);
 SomeOtherMolec(Screen.Canvas);
 ...
end;

И еще проверь 17 строку, в ней ошибка...

Мдя, трудно телепатически читать мозг человека с перпендикулярными ментальными структурами :-)


 
Anatoly Podgoretsky ©   (2007-11-11 21:12) [29]

> Che Vingam  (11.11.2007 21:08:28)  [28]

Ты как издеваешься или позоришься. Хотя бы прочитал выше, что было написано про Screen.Canvas


 
{RASkov}   (2007-11-11 23:46) [30]

> [27] Kick   (11.11.07 19:49)

Если есть переменная у TForm1(т.е. как и есть по умолчанию в Делфи - var Form1: TForm1;)
то просто в своем(их) классе(ах) используй ее для доступа к полям, в часности к PaintBox1: TPaintBox;
в [18] - это уже сказано....

Можно в создаваемый свой класс передавать ссылку на канву паинта с главной формы...
Нечто так:
в модуле с главной формой(создание своего класса)
 with TMolec.Create(self) do begin
  Cnv:=PaintBox1.Canvas;
  Show;
 end;


В описании TMolec
 TMolec = class(TForm)
   procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
 public
  Cnv: TCanvas;
 end;


Ну и реализация FormMouseMove
procedure TMolec.FormMouseMove();
begin
 if not (ssLeft in Shift) then Exit;
 Cnv.Pixels[X, Y]:=clRed;
end;


 
Petr V. Abramov ©   (2007-11-12 00:26) [31]

> Anatoly Podgoretsky ©   (11.11.07 21:12) [29]
>> Che Vingam  (11.11.2007 21:08:28)  [28]
> Ты как издеваешься или позоришься. Хотя бы прочитал выше, что было
> написано про Screen.Canvas

>>Che Vingam   (11.11.07 21:08) [28]
>> человека с перпендикулярными ментальными структурами :-)

ув. Che Vingam   предположил, что структуры именно такие и он может
(пробует) их понять. почему б и нет? И Che Vingam   развлечение, и автору вреда нет
:)))


 
Che Vingam   (2007-11-12 19:59) [32]


> Anatoly Podgoretsky ©   (11.11.07 21:12) [29]
> > Che Vingam  (11.11.2007 21:08:28)  [28]Ты как издеваешься
> или позоришься. Хотя бы прочитал выше, что было написано
> про Screen.Canvas


Не понял сущности позора. Если человек хочет давать дурацкие имена своим объектам, это точно не мой позор.


> Kick   (11.11.07 18:01)
>  Screen: TPaintBox;


 
Anatoly Podgoretsky ©   (2007-11-12 20:09) [33]

> Che Vingam  (12.11.2007 19:59:32)  [32]

Извини, пропустил это.


 
Che Vingam   (2007-11-12 20:36) [34]


> Anatoly Podgoretsky ©   (12.11.07 20:09) [33]

Проехали...



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

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

Наверх




Память: 0.55 MB
Время: 0.022 c
1-1189163263
S@shka
2007-09-07 15:07
2007.12.09
Старт программы из Сервиса


11-1180379388
=BuckLr=
2007-05-28 23:09
2007.12.09
mdvToolTip не пашет. К чему бы?..


1-1190012673
Андрей Пл
2007-09-17 11:04
2007.12.09
Масштабирование в DBChart


3-1185875301
ChaoX
2007-07-31 13:48
2007.12.09
2 связанные таблицы


2-1195144650
М. Николай
2007-11-15 19:37
2007.12.09
ListView