|
|
|
Как сделать event-ы на своем классе в Lazarus
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Мне нужна помощь! Есть свой класс: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. В Этом классе надо сделать event OnClick чтобы при клике bitmap элемента на который кликнули менялся. Все объекты спавнятся динамически. Вопрос: Как это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 15:22 |
|
||
|
Как сделать event-ы на своем классе в Lazarus
|
|||
|---|---|---|---|
|
#18+
Данил ЛиптугаВ Этом классе надо сделать event OnClick чтобы при клике bitmap элемента на который кликнули менялся.TBitmap - невизуальный класс. Поэтому по нему кликнуть невозможно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 15:25 |
|
||
|
Как сделать event-ы на своем классе в Lazarus
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, То есть мне все надо переделать под image? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 15:27 |
|
||
|
Как сделать event-ы на своем классе в Lazarus
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Просто мы кликаем не на bitmap, а по объекту, у которого при клике на него применяется процедура setBitmap. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 15:32 |
|
||
|
Как сделать event-ы на своем классе в Lazarus
|
|||
|---|---|---|---|
|
#18+
Данил ЛиптугаТо есть мне все надо переделать под image?Я понятия не имею какая у Вас задача Данил ЛиптугаПросто мы кликаем не на bitmap, а по объекту, у которого при клике на него применяется процедура setBitmap.По какому объекту? По Вашему TBase тоже кликнуть невозможно. Опишите всю задачу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 15:50 |
|
||
|
Как сделать event-ы на своем классе в Lazarus
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Я делаю игру "морской бой". Код, который я скинул - это модуль, который позволяет контролировать расположение объекта на форме по осям x,y (задавать эти значения или брать их). Для их отображения я использую: var Form1: TForm1; AKletka:array[1..100] of TKletka; KletkaPic:TBitmap; ARanenayaKletka:TRanenayaKletka; AUbitayaKletka:TUbitayaKletka; AKorabl:TKorabl; Count : integer; и procedure TForm1.NewGame; var i:integer; begin KletkaPic := TBitmap.Create; KletkaPic.LoadFromFile('green.bmp'); for i := 1 to 100 do AKletka[i] := TKletka.Create(random(Count)*25,random(Count)*25,KletkaPic); end; После рисуем их на форме: procedure TForm1.Timer1Timer(Sender: TObject); begin Game; Repaint; end; procedure TForm1.FormCreate(Sender: TObject); begin Count := 20; Width := Count * 25; Height := Width; NewGame; end; procedure TForm1.FormPaint(Sender: TObject); var i:integer; begin for i := 1 to 100 do Canvas.Draw(AKletka[i].getX,AKletka[i].getY,KletkaPic); end; Для клеток поля мне надо сделать проверку при клике: 1.Есть ли в этой клетке корабль 2.Если есть то менять bitmap клетки на другой(ранил). 3.Если нет то менять bitmap на третий(промазал). P.S:Еще я не стал скидывать ужасный код который выводит на экран 100 клеток с разным расположением 10x10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 16:02 |
|
||
|
Как сделать event-ы на своем классе в Lazarus
|
|||
|---|---|---|---|
|
#18+
Данил Липтуга, стоит начать с перекрытия метода Paint, например, у панели (TPanel), а нее и так уже есть соответствующие события. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 16:04 |
|
||
|
Как сделать event-ы на своем классе в Lazarus
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Вот результат: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 16:06 |
|
||
|
Как сделать event-ы на своем классе в Lazarus
|
|||
|---|---|---|---|
|
#18+
wadman, Мне хотелось бы понять, в чем отличие TImage и TBitmap? Почему и то и то может отображать картинку, но в TImage есть event-ы а в TBitmap нет. Возможно мой вопрос глупый, но lazarus я изучаю месяц и раньше с подобными проблемами не сталкивался при создании Snake или Doodle Jump. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 16:24 |
|
||
|
Как сделать event-ы на своем классе в Lazarus
|
|||
|---|---|---|---|
|
#18+
Данил Липтугав чем отличие TImage и TBitmap? Примерно в том же, в чём разница между фурой и контейнером. Второй умеет только хранить в себе что-то (картинку), а первый умеет взаимодействовать с пользователем и системой (отображать картинку, реагировать на нажатия мыши и прочее). TImage - это как бы "обёртка" над TBitmap (и не только) для его отображения и обработки кликов мышкой и прочего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 17:29 |
|
||
|
Как сделать event-ы на своем классе в Lazarus
|
|||
|---|---|---|---|
|
#18+
Данил ЛиптугаМне хотелось бы понять, в чем отличие TImage и TBitmap? TBitmap это просто картинка (в памяти), а TImage - контрол, часть пользовательского интерфейса (как кнопка, бегунок и т.п.). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 17:41 |
|
||
|
Как сделать event-ы на своем классе в Lazarus
|
|||
|---|---|---|---|
|
#18+
wadman,alecsvp, Спасибо большое за ответ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 18:03 |
|
||
|
Как сделать event-ы на своем классе в Lazarus
|
|||
|---|---|---|---|
|
#18+
Данил Липтуга, авторМне хотелось бы понять, в чем отличие TImage и TBitmap? Почему и то и то может отображать картинку, но в TImage есть event-ы а в TBitmap нет. TBitmap не может отображать картинку, его нигде и никогда не видно, соответственно, и кликать не по чем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 18:58 |
|
||
|
Как сделать event-ы на своем классе в Lazarus
|
|||
|---|---|---|---|
|
#18+
У вас форма рисует набор данных. А нужно сделать: 1. Объект ПОЛЕ - имеет данные о размерности поля, умеет рисовать себя, имеет список объектов, расположенных на нём 2. Объект Клетка - имеет разные состояния (пусто/корабль/ранен/подбит) и умеет их отрисовывать Все объекты от TCustomControl с перекрытым методом Paint ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2017, 23:50 |
|
||
|
Как сделать event-ы на своем классе в Lazarus
|
|||
|---|---|---|---|
|
#18+
DimaBrУ вас форма рисует набор данных. А нужно сделать: 1. Объект ПОЛЕ - имеет данные о размерности поля, умеет рисовать себя, имеет список объектов, расположенных на нём 2. Объект Клетка - имеет разные состояния (пусто/корабль/ранен/подбит) и умеет их отрисовывать Все объекты от TCustomControl с перекрытым методом Paintну ты ща насоветуешь! Тс же и поверить может. Не стоит для игр все элементы окнами делать. У нас на вступительном тесте предлагалось написать минера, тому, кто заполнял поле кучей TButton - говорили досвидание ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2017, 02:38 |
|
||
|
Как сделать event-ы на своем классе в Lazarus
|
|||
|---|---|---|---|
|
#18+
Хорошая идея с Батонами, только лучше со СпидБатонами ИМХО, так телодвижений меньше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2017, 08:24 |
|
||
|
Как сделать event-ы на своем классе в Lazarus
|
|||
|---|---|---|---|
|
#18+
DimaBrтолько лучше со СпидБатонами только хотел пошутить. Обломил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2017, 09:49 |
|
||
|
Как сделать event-ы на своем классе в Lazarus
|
|||
|---|---|---|---|
|
#18+
DimaBrХорошая идея с Батонами, только лучше со СпидБатонами ИМХО, так телодвижений меньше В новых версиях есть TButtonGroup, с кастомной отрисовкой, ИМХО, из них можно и минера сделать и морской бой и неведому зверушку, при желании ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2017, 09:52 |
|
||
|
Как сделать event-ы на своем классе в Lazarus
|
|||
|---|---|---|---|
|
#18+
Преимущество Батонов в том что они уже имеют эффект нажатия. Зачем изобретать велосипед ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2017, 11:07 |
|
||
|
Как сделать event-ы на своем классе в Lazarus
|
|||
|---|---|---|---|
|
#18+
может ему важно проверить навыки испытуемого, а не рационализм мышления? Тогда правильным ответом может быть и TCustomPanel :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2017, 13:25 |
|
||
|
Как сделать event-ы на своем классе в Lazarus
|
|||
|---|---|---|---|
|
#18+
white_niggerНе стоит для игр все элементы окнами делать......тому, кто заполнял поле кучей TButton - говорили досвидание DimaBrПреимущество Батонов в том что они уже имеют эффект нажатия. Зачем изобретать велосипед ?По идее можно использовать TToolButton. И хендла окна нет и нажимается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2017, 15:41 |
|
||
|
Как сделать event-ы на своем классе в Lazarus
|
|||
|---|---|---|---|
|
#18+
ДокТогда правильным ответом может быть и TCustomPanel :)А вот это - окно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2017, 15:42 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39577276&tid=2041396]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
171ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 427ms |

| 0 / 0 |
