Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi 2

Модерирует : ShIvADeSt

ShIvADeSt (22-03-2007 02:18): http://forum.ru-board.com/topic.cgi?forum=33&topic=8142  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

   

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Продолжение темы http://forum.ru-board.com/topic.cgi?forum=33&topic=3647&start=2020#lt
Внимание, все большие куски кода (более 5 строк) оформляем в тег [more] дабы уменьшить размер поста.

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:52 20-04-2006 | Исправлено: ShIvADeSt, 02:02 30-06-2006
ArtemiyUO

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dmit000
А в чем проблема собственно? Определить что есть итем что сабитем?

Код:
 
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
  if node.HasChildren then
    caption := 'выбран сабитем'
  else
    caption := 'выбран итем';
end;
 

Всего записей: 539 | Зарегистр. 12-12-2005 | Отправлено: 14:20 11-09-2006
dmit000



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ArtemiyUO
прочитай ещё раз мой вопрос.
Структура уже задана и меняться не будет. нужен код для обработки события ONclick на входящих в структуру пунктов и подпунктов

Всего записей: 483 | Зарегистр. 07-06-2004 | Отправлено: 14:40 11-09-2006
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
dmit000

Цитата:
прочитай ещё раз мой вопрос

А ты внимательно почитай описание события OnChange у TTreeView - человек правильно написал.
Если же так хочется самому обрабатывать мышь, то OnClick, GetItemAt

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 14:52 11-09-2006
Sexton

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dmit000, смотря что, собственно, обрабатывать нужно.

Всего записей: 142 | Зарегистр. 31-05-2004 | Отправлено: 14:53 11-09-2006
dmit000



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ещё раз на новой странице:
Составил структуру в редакторе TreeView. Она логически закончена и корректировки не подлежит (в том числе пользователями)  
Структура имеет набор Item и Subitem  
 
приведите пожалуйсто код для обработки события  
OnClick на пунктах (Item) и подпунктах (Subitem)  
 
+
 
Структура:
Программа А
Программа Б
       Программа Б1
       Программа Б2    
 
например при нажатии  на пункте 'Программа А' - событие ONClick // form1.show;
                                   на пункте 'Программа Б2' - событие ONClick // form2.show;
 
Вроде всё понятно написал
Вот мадератор меня за повторение убьёт.

Всего записей: 483 | Зарегистр. 07-06-2004 | Отправлено: 15:07 11-09-2006 | Исправлено: dmit000, 15:09 11-09-2006
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
dmit000
Подробнее...
Только что ты будешь делать если пользователь по дереву будет клавиатурой бегать?
   

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 16:23 11-09-2006 | Исправлено: RomanTim, 16:24 11-09-2006
xitsmex



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dmit000
Ура. А нельзя ли сразу было привести вопрос в удобоваримом виде? Все просто, как Node выделить уже сказали, а вот различать лучше, имхо, не по названию. У них же есть property Data

Всего записей: 58 | Зарегистр. 31-08-2005 | Отправлено: 19:57 11-09-2006
mauar



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как сделать на Delphi: при перетаскивание окна мышью, или нажатия мышью на окно заголовка програмы, окно становится прозрачным?
 

Всего записей: 134 | Зарегистр. 31-07-2006 | Отправлено: 21:00 11-09-2006 | Исправлено: mauar, 21:02 11-09-2006
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mauar

Цитата:
Как сделать на Delphi: при перетаскивание окна мышью, или нажатия мышью на окно заголовка програмы, окно становится прозрачным?

Читать темы по фильтру прозрачное (transparent) окно и вставлять код в соотв события

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:37 12-09-2006
mauar



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
как сделать форму прозрачной я заню, а как прописать события на перемещения или нажатия в окне заколовка левой кнопкой мыши, может подскажите коддинг?

Всего записей: 134 | Зарегистр. 31-07-2006 | Отправлено: 02:16 12-09-2006 | Исправлено: mauar, 02:17 12-09-2006
RedPromo



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mauar
Есть два пути первый это вот

Цитата:
 
procedure WMNCHITTEST(var Msg: TWMNCHitTest); message WM_NCHITTEST; //переопределяем
 

Сам листинг процедуры

Цитата:
 
  inherited;
  if (Msg.Result = HTCAPTION) then
  begin
    if GetAsyncKeyState(VK_LBUTTON)<0  then
    begin
    Self.AlphaBlendValue:=100;
    Self.AlphaBlend:= True;
    end
    else
     Self.AlphaBlend:= False;
  end
  else
   Self.AlphaBlend:= False;
 

 
Второй путь это вот

Цитата:
 
procedure WMNCLButtonDown(var Message: TWMNCLButtonDown); message WM_NCLBUTTONDOWN; //переопределяем раз
procedure WMNCLButtonUp(var Message: TWMNCLButtonUp); message WM_NCLBUTTONUP;
//Переопределям два
 

Тут вроде все понятно.    

Всего записей: 558 | Зарегистр. 05-04-2006 | Отправлено: 02:19 12-09-2006
mauar



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
[/q]
[q]Есть два пути первый это вот  
 
Цитата:  
procedure WMNCHITTEST(var Msg: TWMNCHitTest); message WM_NCHITTEST; //переопределяем  
 
 
Сам листинг процедуры  
 
Цитата:  
  inherited;  
  if (Msg.Result = HTCAPTION) then  
  begin  
    if GetAsyncKeyState(VK_LBUTTON)<0  then  
    begin  
    Self.AlphaBlendValue:=100;  
    Self.AlphaBlend:= True;  
    end  
    else  
     Self.AlphaBlend:= False;  
  end  
  else  
   Self.AlphaBlend:= False;  
 
 
 
Второй путь это вот  
 
Цитата:  
procedure WMNCLButtonDown(var Message: TWMNCLButtonDown); message WM_NCLBUTTONDOWN; //переопределяем раз  
procedure WMNCLButtonUp(var Message: TWMNCLButtonUp); message WM_NCLBUTTONUP;  
//Переопределям два  
 
 
Тут вроде все понятно.    

 
Как вствить в пустую форму например. у меня чет не получется, сижу на Delphi 7

Всего записей: 134 | Зарегистр. 31-07-2006 | Отправлено: 03:48 12-09-2006
Sexton

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
dmit000  Подробнее...   Только что ты будешь делать если пользователь по дереву будет клавиатурой бегать?

Мне кажется, тогда удобнее использовать OnMouseUp (сообщает координаты мыши, делая позиционирование более точным, чем Mouse.CursorPos) и OnKeyUp, которые заодно сообщают и TShiftState, чтобы можно было обрабатывать разные варианты нажатий.

Всего записей: 142 | Зарегистр. 31-05-2004 | Отправлено: 07:01 12-09-2006
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Sexton

Цитата:
Мне кажется, тогда удобнее использовать OnMouseUp (сообщает координаты мыши, делая позиционирование более точным, чем Mouse.CursorPos) и OnKeyUp, которые заодно сообщают и TShiftState, чтобы можно было обрабатывать разные варианты нажатий.

Ну на счет "более точными", это ты загнул - все-таки предобразование экранных координат в относительные для контрола вещь вполне однозначная
А мо MouseUp или MouseDown конечно тоже можно - все зависит от того как хочется чтобы это выглядело для пользователя

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 07:47 12-09-2006
Sexton

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Ну на счет "более точными", это ты загнул - все-таки предобразование экранных координат в относительные для контрола вещь вполне однозначная  

Я к тому, что OnMouseDown (именно так, в предыдущем посте я ошибочно указал OnMouseUp) берет координаты непосредственно в момент нажатия. А если получать координаты в OnClick и OnMouseUp, то может произойти позиционирование не на ту ноду, которую хотел пользователь, а на соседнюю, так как мышь уже немного сдвинется, но визуально будет казаться, что программа ошибочно активировала не ту ноду. Вот какую точность я имею в виду.

Всего записей: 142 | Зарегистр. 31-05-2004 | Отправлено: 08:13 12-09-2006
GTA3

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
как сделать что бы в этой процедуре я мог сохранять файл с определенными именем
 
чтобы фал сохранялся так
00000001_день месяца.месяц.год
 
при этом
00000001_  -константа
день месяца.месяц.год --дата
 
 
if   SaveDialog1.Execute then
memo1.Lines.SaveToFile(SaveDialog1......?

Всего записей: 114 | Зарегистр. 22-07-2004 | Отправлено: 10:24 12-09-2006
Sexton

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
if SaveDialog1.Execute then  
memo1.Lines.SaveToFile('00000001_' + DateToStr(Date))

Всего записей: 142 | Зарегистр. 31-05-2004 | Отправлено: 10:34 12-09-2006
GTA3

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sexton
спасибо все получилось
 
 
Добавлено:
Sexton
у меня есть еще вопрос к этому делу еще надо добавить часы минуты секунды
но что бы без двоеточия в виндовсе оно не пропускается
 
я пробовал функцию
if SaveDialog1.Execute then  
memo1.Lines.SaveToFile('00000001_' + TimeToStr(Time))
 
но так как эта функция сохраняет файл с двоеточием (к примеру 12:45:33)
виндовс выдает ошибку
 
 

Всего записей: 114 | Зарегистр. 22-07-2004 | Отправлено: 10:55 12-09-2006
Sexton

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GTA3
if SaveDialog1.Execute then    
memo1.Lines.SaveToFile('00000001_' + StringReplace(TimeToStr(Time), ':', '_', rfReplaceAll))

Всего записей: 142 | Зарегистр. 31-05-2004 | Отправлено: 11:32 12-09-2006
OdesitVadim



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
можно воспользоваться хорошой процедуркой DateTimeToString. Она позволяет сформировать то, что тебе надо.
где то так

Код:
 
var
 s:string;
begin
....
if SaveDialog1.Execute then begin  
DateTimeToString(s,'yymmdd-hhnnss',now)
memo1.Lines.SaveToFile('00000001_' +s);
end;
 

Подробности, как всегда в хелпе. Там целая табличка с параметрами форматирования, даже милисекунды при желании прикрутишь
 
Добавлено:
Sexton
А ваш метод, может не всегда работать. А если в локали пользователя, который будет пользоваться программой, для разделения минут и часов исрользуется точка? Вы скажете маловероятно. Да мне в голову такая страна не пришла, но достаточно посмотреть на дату.

----------
Press any key to continue or any other key to exit
Пишите так, чтобы не было стыдно за нобелевскую премию.

Всего записей: 1568 | Зарегистр. 19-09-2003 | Отправлено: 11:34 12-09-2006
   

Страницы: 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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi 2
ShIvADeSt (22-03-2007 02:18): http://forum.ru-board.com/topic.cgi?forum=33&topic=8142


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru