|
#1
|
|||
|
|||
невидимость
кинул на форму картинку (во всю форму и кинул две кнопки например на картинке что то нарисовано и в эту область кинул кнопку,ну что бы кнопка не перекрывала эту картинку установил значеие формы видимость false ,только вот если нажимать по картинке в ту область где должна быть кнопка ни фига не происходит.А должно переходить на другую форму
|
#2
|
|||
|
|||
Выкидываешь на форму TImage (твоя картинка), и пару Button. На форме построй элементы так чтобы кнопки были поверх TImagе.
В твоем случае, если стоит на форме visible=false пропиши следующее: Код:
procedure TForm1.Button1Click(Sender: TObject); begin form2.visible:=true; form2.ShowModal; end; |
#3
|
|||
|
|||
Блин я походу не так обьяснил,короче допустим картинка на ней там поле и овца ,вот я делаю кнопку размером с овцу кидаю ,на картинку там где нарисована овца ,ставлю в инвиз кнопку (невидимую)и там пишу при нажатии на кнопку ,что бы показалась джругая форма ,компилю,нажимаю на область овцы где должна быть кнопка тока нифига не че не открывается..если все же вопрос поняли прально ,то ваш совет не сработал (
|
#4
|
|||
|
|||
Всё понял..а если ты ставишь в инвиз кнопку, то как ты на неё нажмешь? Ставишь в инвиз, значит и использовать её не можешь..
Советую поделить одну большую картинку на несколько меньше. Например картинка овци..Выложи на твою картинку..новый TImage на котором будет изображена только овца и задай у неё OnClick |
#5
|
|||
|
|||
т.е. ни как нельзя кинуть на область рисунка кнопку и просто сделать кнопку невидимой ,но активной ...
|
#6
|
|||
|
|||
Нет, нельзя.
А в чем тебя не устраивает проверка области. Сделай в том же TImage'е обработчик щелчка мыши и проверяй координаты на попадание в нужную тебе область. Пример попадания в область 100-150,100-150: Код:
procedure TMainForm.Image1Click(Sender: TObject); var ClickPoint : TPoint; begin ClickPoint := ScreenToClient(Mouse.CursorPos); // По координатам на форме If (ClickPoint.X > 100) And (ClickPoint.X < 150) And (ClickPoint.Y > 100) And (ClickPoint.Y < 150) Then Begin // Твои действия здесь End; // По координатам на картинке If (ClickPoint.X > Image1.Left + 100) And (ClickPoint.X < Image1.Left + 150) And (ClickPoint.Y > Image1.Top + 100) And (ClickPoint.Y < Image1.Top + 150) Then Begin // Твои действия здесь End; end; |
#7
|
|||
|
|||
У меня ужасно плохо с координатами ,может подскажешь где почитать на эту тему в делфи?
|
#8
|
|||
|
|||
Ну с кординатами все просто.
Есть локальные координаты (от родителя компонента). Есть глобальные - координаты экрана. Переход между ними через ClientToScreen и ScreenToClient. Дальше просто поэксперементируй и все. |
#9
|
||||
|
||||
Еще, если овца одноцветная можно проверять цвет того пиксела по которому произошел клик. (по координатам клика) - если совпадает с цветом овцы то значит по ней кликнули.
|