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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.07 c
15-1194734939
Johnmen
2007-11-11 01:48
2007.12.09
А где Digitman?


15-1191925600
Игорь Шевченко
2007-10-09 14:26
2007.12.09
Анкеты действительно сломались.


3-1180525450
jack128
2007-05-30 15:44
2007.12.09
Работа с FB из нескольких потоков


15-1193871434
Циркуль
2007-11-01 01:57
2007.12.09
Объясните пожалуйста дельфисту, что такое шаблоны в Си?


11-1181038471
SergeR
2007-06-05 14:14
2007.12.09
Пожелания по сайту KOLnMCK.ru





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский