Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Помощь по Visual Basic 2010 Express

Ответить
Настройки темы
VBA - Помощь по Visual Basic 2010 Express

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Прошу помощи в создании программы для вывода на форме графических файлов. Чтобы при перемещении мыши объект двигался за курсором, а при нажатии оставался в данной позиции. Программа будет предназначена для создания простейших схем по электротехнике.

Отправлено: 15:39, 08-04-2013

 

Аватара для opel431

Ветеран


Contributor


Сообщения: 1803
Благодарности: 714

Профиль | Отправить PM | Цитировать


Цитата mkw-best:
Программа будет предназначена для создания простейших схем по электротехнике. »
Если только для этого - чем Splan не устраивает? Сам давно его использую и нареканий нет.

Поскольку других предложений нет, выскажу свою точку зрения. Вся обработка перемещения объекта в событиях:

1. MouseDown - запоминаем первоначальные координаты курсора (X0:=X, Y0:=Y)
2. MouseMove - разрешаем перемещение объекта (True) и изменяет координаты левого верхнего угла объекта на величину сдвига курсора мыши
3. MouseUp - запрещаем перемещение объекта (False).

В событии OnDragOver (формы или панели) необходимо указать какие компоненты принимать для перемещения (Accept:=Source is TImage)

Свойство объекта DragMode=Automatic.

Как то так, должно работать и в VB, просто давно не пишу в VB.

посмотрите здесь - http://msdn.microsoft.com/ru-RU/vstudio/
еще хороший сайт - http://www.codeproject.com/Forums/16...ual-Basic.aspx

-------
Хвала тому, кто встав среди камней, уча другого, сам будет умней.


Последний раз редактировалось opel431, 09-04-2013 в 03:47.

Это сообщение посчитали полезным следующие участники:

Отправлено: 03:11, 09-04-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


А можно элементарный пример. Я сделал перемещение объекта с помощью таймера. Но этот метод закрашивает всэ область в определенный цвет. И мышью устанавливаю в указанную область рисунок. Но этот метод мне не подойдет, потому что я не могу нарисовать еще один объект, т.к. стирается старый. А как ваш метод использовать, вернее как прописать маленько не понимаю. Не поможете?
Цитата opel431:
В событии OnDragOver (формы или панели) необходимо указать какие компоненты принимать для перемещения (Accept:=Source is TImage)
Свойство объекта DragMode=Automatic.
Как то так, должно работать и в VB, просто давно не пишу в VB. »

Отправлено: 13:15, 10-04-2013 | #3


Аватара для opel431

Ветеран


Contributor


Сообщения: 1803
Благодарности: 714

Профиль | Отправить PM | Цитировать


Цитата mkw-best:
А можно элементарный пример. »
Увы, для примера нужно установить VB, а пример в Delphi вам может ничего не дать!

читать дальше »


// Автор: Михаил Христосенко

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button<>mbLeft then move:=false
else begin
move:=true;
x0:=x;
y0:=y;
rec:=image1.BoundsRect; //запоминаем контур картинки
end;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if move then begin
Form1.Canvas.DrawFocusRect(rec); //рисуем рамку
with rec do begin
left:=Left+x-x0;
top:=Top+y-y0;
right:=right+x-x0;
bottom:=bottom+y-y0;
x0:=x;
y0:=y; // изменяем координаты
end;
Form1.Canvas.DrawFocusRect(rec); // рисуем рамку на новом месте
end;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Form1.Canvas.DrawFocusRect(rec);
with image1 do begin
setbounds(rec.left+x-x0,rec.top+y-y0,width,height); //перемещаем картинку
move:=false;
end;
end;


Реализация должна зависеть от конечной цели проекта - построении произвольных схем или демонстрации каких-то стандартных.
В первом случае придется решать задачи динамического создания объектов из шаблона и привязки объектов к сетке на форме. Решать придется достаточно много, перемещение объектов отойдет на третий план, хотя даже эти процедуры можно решать по разному (сразу объект, сначала рамку - как в примере).
Во втором, все проще - создаете объекты (например, TShape), "строите" на форме или отдельных панелях из них схемы, по определенным событиям меняете или свойство Visible, или свойства Brush/Pen (здесь и таймер пригодится) - фактически демонстрируете работу схемы. Здесь все легко и наглядно. На второй вариант, меня навело ваше желание использовать таймер, ибо при реальном построении схемы он лишний. Может ошибаюсь.

Простой поиск по перемещению объектов в VB выдал следующее:
http://vbbook.ru/vb.net/peremeshenie...shi-na-vb-net/
http://www.programmersforum.ru/showthread.php?t=172497
http://www.sql.ru/forum/actualthread...id=953192&pg=2
http://www.vbfaq.ru/2008/09/kak-pere...-image-myshyu/

-------
Хвала тому, кто встав среди камней, уча другого, сам будет умней.


Последний раз редактировалось opel431, 11-04-2013 в 01:50.


Отправлено: 21:44, 10-04-2013 | #4


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Я сделал, что у меня запоминается картинка, и я вставляю следующую. Но пока меня что то не устраивает. А вам спасибо. Буду искать пути отказаться от таймера. Не нравиться мне с ним работать. Руки связывает.

Отправлено: 03:27, 11-04-2013 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Помощь по Visual Basic 2010 Express

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Visual studio express 2010 C# Zapadenec Автоматическая установка приложений 0 31-07-2012 22:45
Разное - [решено] DataGridView в Visual Basic 2010 neo21 Программирование и базы данных 2 22-11-2011 02:48
Разное - [решено] Progressbar в Visual Basic 2010 neo21 Программирование и базы данных 4 30-10-2011 16:29
C/C++ - Visual C++ 2010 Express (Активация) WaReZ-0k Программирование и базы данных 2 22-02-2011 17:14
.NET - [решено] TextBox в Visual Basic 2010 - нужна помощь SharkyUA Программирование и базы данных 2 02-02-2011 01:06




 
Переход