Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.09.2013, 18:57   #21
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так вы отловите компоненты непосредственно находящиеся на форме, в т.ч. и TControl. А теперь бросьте на форму панель и на неё что-то и в обработчиках формы распознайте то что-то, над которым курсор находится. Mes.LParam будет возвращать только указатель на панель. Кстати и в вашем примере CMMouseLeave не нужен
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 19.09.2013 в 19:00.
Аватар вне форума Ответить с цитированием
Старый 19.09.2013, 19:39   #22
Alexandr17-10
Пользователь
 
Регистрация: 12.08.2013
Сообщений: 99
По умолчанию

1 Скажите что эти процедуры делают
procedure CMMouseEnter(var Mes: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Mes: TMessage); message CM_MOUSELEAVE;
2 Как пробежаться по компонентам TPanel не по всем а только по панелькам чтобы полностью закончить работу
Код:
procedure TLib_Ed_2.Timer1Timer(Sender: TObject);
var Cur:TPoint;
  LControl:TWinControl;
begin
  GetCursorPos(Cur);
  if (Cur.X >self.left)and(Cur.X <self.left+self.Width)and(Cur.y >Self.top)and(Cur.y < Self.top+Self.Height) then begin
    LControl:=FindVCLWindow(Cur);
    ReadGetIni(ExtractFilePath(Application.ExeName)+'RES Lib Edit\ParamTReadLanguage.data.ini');
    Label3.Caption :=  GetIniStr('TReadLanguageText'+Edit1.Text,'0Language<--')+' '+LControl.Name;
    If LControl.Name='FileBtn' then begin
      ReadGetIni(ExtractFilePath(Application.ExeName)+'RES Lib Edit\ParamTButton_AND_TBitBtn.data.ini');
      If FileBtn.Enabled=true then begin
        If ButtonClickDbl[0]=0 then begin
          (LControl as TPanel).Color:=GetIniClr('LibxEditorParameter'+Edit1.Text,'YesSelectYesEnabledYesClick<--'+Name+'-->'+(LControl as TPanel).Name+'-->Color');
          (LControl as TPanel).Font.Color:=GetIniClr('LibxEditorParameter'+Edit1.Text,'YesSelectYesEnabledYesClick<--'+Name+'-->'+(LControl as TPanel).Name+'-->Font-->Color');
          (LControl as TPanel).Font.Size:=GetIniInt('LibxEditorParameter'+Edit1.Text,'YesSelectYesEnabledYesClick<--'+Name+'-->'+(LControl as TPanel).Name+'-->Font-->Size');
          (LControl as TPanel).Caption:=GetInistr('LibxEditorParameter'+Edit1.Text,'YesSelectYesEnabledYesClick<--'+Name+'-->'+(LControl as TPanel).Name+'-->Caption');
          (LControl as TPanel).BorderStyle:=TBorderStyle(GetIniInt('LibxEditorParameter'+Edit1.Text,'YesSelectYesEnabledYesClick<--'+Name+'-->'+(LControl as TPanel).Name+'-->BorderStyle'));
        end;
        If ButtonClickDbl[0]=1 then begin
          (LControl as TPanel).Color:=GetIniClr('LibxEditorParameter'+Edit1.Text,'YesSelectYesEnabledNoClick<--'+Name+'-->'+(LControl as TPanel).Name+'-->Color');
          (LControl as TPanel).Font.Color:=GetIniClr('LibxEditorParameter'+Edit1.Text,'YesSelectYesEnabledNoClick<--'+Name+'-->'+(LControl as TPanel).Name+'-->Font-->Color');
          (LControl as TPanel).Font.Size:=GetIniInt('LibxEditorParameter'+Edit1.Text,'YesSelectYesEnabledNoClick<--'+Name+'-->'+(LControl as TPanel).Name+'-->Font-->Size');
          (LControl as TPanel).Caption:=GetInistr('LibxEditorParameter'+Edit1.Text,'YesSelectYesEnabledNoClick<--'+Name+'-->'+(LControl as TPanel).Name+'-->Caption');
          (LControl as TPanel).BorderStyle:=TBorderStyle(GetIniInt('LibxEditorParameter'+Edit1.Text,'YesSelectYesEnabledNoClick<--'+Name+'-->'+(LControl as TPanel).Name+'-->BorderStyle'));
        end;
      end else begin
        (LControl as TPanel).Color:=GetIniClr('LibxEditorParameter'+Edit1.Text,'YesSelectNoEnabledNoClick<--'+Name+'-->'+(LControl as TPanel).Name+'-->Color');
        (LControl as TPanel).Font.Color:=GetIniClr('LibxEditorParameter'+Edit1.Text,'YesSelectNoEnabledNoClick<--'+Name+'-->'+(LControl as TPanel).Name+'-->Font-->Color');
        (LControl as TPanel).Font.Size:=GetIniInt('LibxEditorParameter'+Edit1.Text,'YesSelectNoEnabledNoClick<--'+Name+'-->'+(LControl as TPanel).Name+'-->Font-->Size');
        (LControl as TPanel).Caption:=GetInistr('LibxEditorParameter'+Edit1.Text,'YesSelectNoEnabledNoClick<--'+Name+'-->'+(LControl as TPanel).Name+'-->Caption');
        (LControl as TPanel).BorderStyle:=TBorderStyle(GetIniInt('LibxEditorParameter'+Edit1.Text,'YesSelectNoEnabledNoClick<--'+Name+'-->'+(LControl as TPanel).Name+'-->BorderStyle'));
      end;
    end else begin
    end;
  end;
end;
Пока что демо код
Alexandr17-10 вне форума Ответить с цитированием
Старый 20.09.2013, 02:41   #23
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Так вы отловите компоненты непосредственно находящиеся на форме, в т.ч. и TControl. А теперь бросьте на форму панель и на неё что-то и в обработчиках формы распознайте то что-то, над которым курсор находится. Mes.LParam будет возвращать только указатель на панель.
Да. Вы правы.
northener вне форума Ответить с цитированием
Старый 20.09.2013, 13:52   #24
Alexandr17-10
Пользователь
 
Регистрация: 12.08.2013
Сообщений: 99
По умолчанию

Может кто ответит на это сообщение: http://www.programmersforum.ru/showp...9&postcount=22
Код:
 For I := 0 to ComponentCount - 1 do
        If (Components[I].Name='FileBtn')or(Components[I].Name='EditBtn') then begin
          (Components[I] as TPanel).Color:=GetIniClr('LibxEditorParameter'+Edit1.Text,'NoSelectYesEnabledNoClick<--'+Name+'-->'+(Components[I] as TPanel).Name+'-->Color');
          (Components[I] as TPanel).Font.Color:=GetIniClr('LibxEditorParameter'+Edit1.Text,'NoSelectYesEnabledNoClick<--'+Name+'-->'+(Components[I] as TPanel).Name+'-->Font-->Color');
          (Components[I] as TPanel).Font.Size:=GetIniInt('LibxEditorParameter'+Edit1.Text,'NoSelectYesEnabledNoClick<--'+Name+'-->'+(Components[I] as TPanel).Name+'-->Font-->Size');
          (Components[I] as TPanel).Caption:=GetInistr('LibxEditorParameter'+Edit1.Text,'NoSelectYesEnabledNoClick<--'+Name+'-->'+(Components[I] as TPanel).Name+'-->Caption');
          (Components[I] as TPanel).BorderStyle:=TBorderStyle(GetIniInt('LibxEditorParameter'+Edit1.Text,'NoSelectYesEnabledNoClick<--'+Name+'-->'+(Components[I] as TPanel).Name+'-->BorderStyle'));
        end;
этот код почемута изменяет компонент

Последний раз редактировалось Alexandr17-10; 20.09.2013 в 14:15.
Alexandr17-10 вне форума Ответить с цитированием
Старый 20.09.2013, 15:13   #25
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Цитата:
1 Скажите что эти процедуры делают
procedure CMMouseEnter(var Mes: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Mes: TMessage); message CM_MOUSELEAVE;
указывают какие процедуры выполнить при поступлении указанных (CM_MOUSEENTER/CMMOSELEAVE) сообщений (message).

Цитата:
2 Как пробежаться по компонентам TPanel не по всем а только по панелькам чтобы полностью закончить работу
Код:
if components[i] is TPanel then begin //что-то делаем
    p:=components[i] as Tpanel;
    p.color:=...
    ...
Цитата:
этот код почемута изменяет компонент
а почему он не должен менять если его просят.
Цитата:
(Components[I] as TPanel).Color:=...
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 20.09.2013, 16:41   #26
Alexandr17-10
Пользователь
 
Регистрация: 12.08.2013
Сообщений: 99
По умолчанию

Код:
For I := 0 to ComponentCount - 1 do
        if components[i] is TPanel then
          If (Components[I].Name='FileBtn')or(Components[I].Name='EditBtn') then begin
            (Components[I] as TPanel).Color:=GetIniClr('LibxEditorParameter'+Edit1.Text,'NoSelectYesEnabledNoClick<--'+Name+'-->'+(Components[I] as TPanel).Name+'-->Color');
            (Components[I] as TPanel).Font.Color:=GetIniClr('LibxEditorParameter'+Edit1.Text,'NoSelectYesEnabledNoClick<--'+Name+'-->'+(Components[I] as TPanel).Name+'-->Font-->Color');
            (Components[I] as TPanel).Font.Size:=GetIniInt('LibxEditorParameter'+Edit1.Text,'NoSelectYesEnabledNoClick<--'+Name+'-->'+(Components[I] as TPanel).Name+'-->Font-->Size');
            (Components[I] as TPanel).Caption:=GetInistr('LibxEditorParameter'+Edit1.Text,'NoSelectYesEnabledNoClick<--'+Name+'-->'+(Components[I] as TPanel).Name+'-->Caption');
            (Components[I] as TPanel).BorderStyle:=TBorderStyle(GetIniInt('LibxEditorParameter'+Edit1.Text,'NoSelectYesEnabledNoClick<--'+Name+'-->'+(Components[I] as TPanel).Name+'-->BorderStyle'));
          end;
вот какие параметры присваиваются
Код:
NoSelectYesEnabledNoClick<--Lib_Ed_2-->FileBtn-->Color=clAqua
NoSelectYesEnabledNoClick<--Lib_Ed_2-->FileBtn-->Font-->Color=clBlack
NoSelectYesEnabledNoClick<--Lib_Ed_2-->FileBtn-->Font-->Size=12
NoSelectYesEnabledNoClick<--Lib_Ed_2-->FileBtn-->Caption=&Файл
NoSelectYesEnabledNoClick<--Lib_Ed_2-->FileBtn-->BorderStyle=1
и в итоге это получается
Изображения
Тип файла: jpg 0.jpg (69.2 Кб, 139 просмотров)
Тип файла: jpg 1.jpg (118.8 Кб, 120 просмотров)
Alexandr17-10 вне форума Ответить с цитированием
Старый 21.09.2013, 10:04   #27
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
if components[i] is TPanel then
если обрабатываемый I-й компонент имеет тип Tanel
Цитата:
Код:
If (Components[I].Name='FileBtn')or(Components[I].Name='EditBtn') then begin
если имя у этого компонента ( У ПАНЕЛИ!!) является "FileBtn" или "EditBtn" тогда ...

Вы уверены, что у Вас есть ПАНЕЛИ с такими именами?!

думаю, что Вы хотели написать примерно такой код:
Код:
For i := 0 to ComponentCount - 1 do
        If components[i] is TPanel then
             for j := 0 to components[i].ComponentCount - 1 do
                If (Components[i].Components[j].Name='FileBtn')or(Components[i].Components[j].Name='EditBtn') then begin 
....  тут обрабатывайте найденный Components[i].Components[j]
я написал прямо в браузере, в IDE не проверял. Но смысл моей поправки, надеюсь, Вам понятен?..
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как рисовать график ф-ии с на компоненте TImage? Владимир1111 Помощь студентам 4 02.04.2010 10:26
Как в компоненте DBGrid не изменять размеры таблицы Ellita Помощь студентам 1 01.03.2010 05:46
уберите курсор (в конце программы верните курсор), HECTOR.A. Паскаль, Turbo Pascal, PascalABC.NET 2 05.06.2009 20:10
Как в компоненте memo сделать ... }{oт@бь)ч Компоненты Delphi 21 07.02.2009 07:10
как осуществить поиск в компоненте WebBrowser1 в delphi 7 SonClan Работа с сетью в Delphi 5 20.11.2007 12:43