Форум: "Прочее";
Текущий архив: 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;
В описании TMolecTMolec = class(TForm)
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
public
Cnv: TCanvas;
end;
Ну и реализация FormMouseMoveprocedure 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.054 c