проблема с координатами мыши

  • Автор темы Blood Pepper
  • Дата начала
Статус
Закрыто для дальнейших ответов.
B

Blood Pepper

Гость
#1
Народ, помогите, пожалуйста, умоляю, помилуйте новичка-чайника, у меня возникла серьезная проблема, мне срочняк нужно сделать фишку: нормальный рабочий стол, все путёво, никаких с виду изменений нет, но стоит пользователю навести курсор мыши к самому верху, как оттудова выезжает вниз форма. Я знаю как такую прогу сделать, изначально задать отрицательный top форме и потом организовать цикл, чтобы форма выезжала, но подскажите плиз, где и что именно надо писать, чтобы определялись координаты мыши на рабочем столе, а не на форме?? Прошу помощи Вашей<_<
 
A

Artexoid

Гость
#2
Blood Pepper
подскажите плиз, где и что именно надо писать, чтобы определялись координаты мыши на рабочем столе, а не на форме??
Вот тебе пероцедурки.

mouse.CursorPos.X:integer //Координата курсора по горизонтали
mouse.CursorPos.Y:integer //Координата курсора по вертикали

Пример:
Код:
if mouse.CursorPos.Y=0 then
begin
  //Тут пишешь то, что тебе надо сделать когда курсос находится вверху рабочего стола.
end;
А еще можно сделать по другому. Можно форму не полностью спрятать, а оставить маленькую линию выглядывающую сверху экрана. Когда пользователь наведет на нее форма выедет вниз. В этом случае сразу видно, что там есть какая-то панелька или менюшка и тебе не надо узнавать позицию курсора на рабочем столе, а просто в событие OnMouseMove прописать выезд твоей формы.
 
B

Blood Pepper

Гость
#3
Artexoid, спасибо огромное за совет=) А второй способ я уже пробовал использовать, но мне надо именно чтобы не было ничего видно. Спасиб, друган.
 
A

Artexoid

Гость
#4
Blood Pepper
Рад что смог помоч :unsure: :unsure: :blink: :blink: :huh:
 
B

Blood Pepper

Гость
#5
Artexoid, кстати, заодно не подскажешь, как сделать фишку, чтобы можно было все элементы из listbox1 перенести в listbox2 нажатием одной кнопки? Как перенести по отдельности я знаю, а вот как чтобы все вместе?
 
A

Artexoid

Гость
#6
Blood Pepper
В смысле перенести все записи??
Вот так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  form1.ListBox2.Items:=form1.ListBox1.Items;
end;
 
B

Blood Pepper

Гость
#7
Ну да. Вообще то задание моё состоит в следующем: на форме имеются 2 листо бокса, между ними 4 до боли знакомые всем кнопки: перевсти одну выбранную запись из первого лист бокса во второй, из второго в первый, и перевести все записи из первого во второй и из второго в первый. Причем когда переводишь записи, из родительского лист бокса они должны удаляться. С кнопками, добавляющими по одной записи я разобрался, вот код:

procedure TForm1.Button1Click(Sender: TObject);
begin
if listbox2.Items.IndexOf(listbox1.Items[listbox1.itemindex])=-1
then listbox2.items.add(listbox1.items[listbox1.itemindex]);
listbox1.items.Delete(listbox1.ItemIndex);
end;

А вот как грамотно описать операцию со всеми записями, а то чё-то я там намудрил, он снова ошибки выдает?
 
B

Barmutik

Гость
#8
Как насчёт:

Код:
for I := 0 to ListBox1.Items.Count - 1 do
ListBox2.Items.Add(ListBox2.Items[I]);

ListBox1.Items.Clear;
 
A

Artexoid

Гость
#9
Blood Pepper
А что разве мой код не переносить все записи с Listbox1 в Listbox2 ???
 
A

Artexoid

Гость
#10
Blood Pepper
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 form1.ListBox2.Items:=form1.ListBox1.Items;
 form1.ListBox1.Clear; //вот это подпиши и все удалиться в ListBox1
end;
По моиму самый быстрый способ вот этот и без цыклов
 
B

Barmutik

Гость
#11
А если в ListBox2 уже были записи до этого .. то что с ними будет? :unsure:
 
B

Blood Pepper

Гость
#12
Artexoid, слушай, Barmutik дело говорит, ты просто присваиваешь все значения первого лист бокса второму, а потом чистишь первый, так ведь что если во втором уже есть значения после добавления одинарной кнопкой? Снова посыпятся ошибки или в лучшем случае добавятся 2 одинаковых записи, а мне надо чтобы все разные были.
 
A

Artexoid

Гость
#13
Blood Pepper
Barmutik
А как вам такая комбинация !!??? :unsure:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  form1.ListBox2.Items.AddStrings(form1.ListBox1.Items);
  form1.ListBox1.Clear;
end;
Вот тут все работает нормально и записи в listbox2 которые были не теряются! :unsure: :blink:
 
Z

zubr

Гость
#14
Ну можно еще так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox2.Items.AddStrings(ListBox1.Items);
ListBox1.Items.Clear;
end;
 
A

Artexoid

Гость
#16
zubr
Ну ты черт!! :unsure: :unsure: :blink: :blink: :huh: :huh: :( :( :lol: :lol: :lol: :lol:
Ты с кем-то еще там 2 раза ответил :lol: :lol: :lol: :lol: :lol:
 
B

Blood Pepper

Гость
#17
кстати, с координатами мыши чё-то не работает
 
A

Artexoid

Гость
#18
Blood Pepper
Короче вот. Я тут тебе написпл примерчик, как я понял : 2 Listbox 4 Кнопки (Перемещают записи ил 1-го Listbox в другой и назад), Кнопка выхода, Все это на форме которая выезжает когда курсор вверху экрана. Конечно код можно сократить немного, продумать получше, но общий смысл поймеш.
Загрузить пример.
 
A

Artexoid

Гость
#19
Blood Pepper
Кстате когда скачаеш посмотриш скажи помогло или нет !!)
 
Статус
Закрыто для дальнейших ответов.