Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.14;
Скачать: CL | DM;

Вниз

помогите пожалуйста написать программу в Delphi   Найти похожие ветки 

 
chery ©   (2009-12-22 22:05) [0]

помогите пожалуйста написать программу в Delphi, мне очень важно в кротчайшие сроки е сдлать, а у самого никак не получается.
Итак требуется написать программу в которой основной элемент-ToolBar.
Главное условие-сохранение положения ToolBar при закрытии программы в реестре и загрузки этого положения при открытии программы.
Вот ссылка на то что у меня получилось самостоятельно написать, там все пояснения и комментарии есть.
http://depositfiles.com/files/rytsn47b7
просьба писать в скайп:akva-smerch
или ICQ:562164855


 
Знаток   (2009-12-22 22:29) [1]

И главное, ветка пришла из основной, видимо модератор решил дать нам ее на растерзание, что бы поглумись.


 
boa_kaa ©   (2009-12-22 22:32) [2]

как бы я хотел писать программы, в которых основным элементом был бы тулбар...
нет в жизни щястья...


 
Ega23 ©   (2009-12-22 22:48) [3]

Цена?


 
chery ©   (2009-12-22 23:17) [4]


> И главное, ветка пришла из основной, видимо модератор решил
> дать нам ее на растерзание, что бы поглумись.

ну попрошу без растезаний, просто кому не сложно помогите.

> как бы я хотел писать программы, в которых основным элементом
> был бы тулбар...

данная программа пишется в учебно-ознакомительных целях поэтому ничего другого из элементов нет.

> Цена?

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


 
Джо ©   (2009-12-22 23:28) [5]

На ДДР (Добрый Дух Рождества) расчитываете?
Не переживайте, в армию весной идти — лучше, чем осенью... ;->


 
chery ©   (2009-12-22 23:34) [6]


> На ДДР (Добрый Дух Рождества) расчитываете? Не переживайте,
>  в армию весной идти — лучше, чем осенью... ;->

может и внемлю вашему совету и пойду в армию весной но наверно не в этом году. А что до ДДР, то надежда умирает последней.


 
Petr V. Abramov ©   (2009-12-22 23:35) [7]


> есть еще такая валюта как спасибо, пожалуй я не смогу отблагодарить
> человека финансово, т.к. на данный момент не располагаю
> средствами.

даже кружку пива жалко?


 
TIF ©   (2009-12-22 23:46) [8]

Как любопытно выглядит рядом с этой темой соседняя "Дети, не ходите работать программистами" )


 
Ega23 ©   (2009-12-22 23:49) [9]


> есть еще такая валюта как спасибо

Дело в том, что за спасибо тут именно помогают сделать, а не делают за тебя. А вот когда сделать за тебя - это за спасибо уже не канает.


 
chery ©   (2009-12-22 23:51) [10]


> даже кружку пива жалко?

если вы конечно с мурманска то угощу((=
кстати осталось немного помочь, в принципе программа почти работает(то что не работает корректно закоментенно).
Посмотрите пожалуйста что не так, почему когда ToolBar не на ControlBar не сохраняется?
http://depositfiles.com/files/xpc2ma774


 
chery ©   (2009-12-22 23:53) [11]


> Дело в том, что за спасибо тут именно помогают сделать

именно помощь и нужна, все впринципе все написанно, но почему-то сохраняется не совсем корректно, а почему я не понимаю))=


 
Petr V. Abramov ©   (2009-12-22 23:56) [12]


> если вы конечно с мурманска то угощу((=

грустный смайлик намекает, что пиво будет фиговое, а кружка маленькая ((=

> Посмотрите пожалуйста что не так, почему когда ToolBar не
> на ControlBar не сохраняется?

а нахрен кому качать неизвестно что неизвестно зачем?
сформулируй, что тебе непонятно, и отношение сразу изменится.


 
chery ©   (2009-12-22 23:57) [13]

в принципе программа работает, но не так как хотелось бы, когда ToolBar лежит на ControlBar все сохраняется, а когда не лежит почему-то нет. То что должно теоретически работать, но не работает {закоментенно}.
Вот вариант данной работы http://depositfiles.com/files/xpc2ma774


 
chery ©   (2009-12-22 23:58) [14]


> грустный смайлик намекает, что пиво будет фиговое, а кружка
> маленькая ((=

он не грустный а веселый, просто я привык писать обратно(=
я могу если надо написать тут код


 
Petr V. Abramov ©   (2009-12-23 00:05) [15]


> chery ©   (22.12.09 23:58) [14]

ну так напиши тут код, только немного, строк 20 отсилы, скажи
1. Я ожидаю от этого кода, что он полетит на Солнце
2. А код, сволочь, летит на Луну.
почему?


 
chery ©   (2009-12-23 00:13) [16]

Procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
r:TRect;
begin
{if ToolBar1.HostDockSite<>ControlBar1 then
begin}

if ToolBar1.HostDockSite=nil then
{begin
 Key := RegKeyOpenWrite(HKEY_LOCAL_MACHINE,KeyWin);
RegKeySetStr(Key,"Control","1");
RegKeyClose(Key);

 GetWindowRect(ToolBar1.Handle, R);
  Key := RegKeyOpenWrite(HKEY_LOCAL_MACHINE,KeyWin);
RegKeySetStr(Key,"Left",inttostr(r.Left));
RegKeyClose(Key);

  Key := RegKeyOpenWrite(HKEY_LOCAL_MACHINE,KeyWin);
RegKeySetStr(Key,"Top",inttostr(r.Top));
RegKeyClose(Key);
end
else }

begin
   Key := RegKeyOpenWrite(HKEY_LOCAL_MACHINE,KeyWin);
RegKeySetStr(Key,"Control","2");
RegKeyClose(Key);
 Key := RegKeyOpenWrite(HKEY_LOCAL_MACHINE,KeyWin);
RegKeySetStr(Key,"Left",inttostr(toolbar1.Left));
RegKeyClose(Key);

  Key := RegKeyOpenWrite(HKEY_LOCAL_MACHINE,KeyWin);
RegKeySetStr(Key,"Top",inttostr(toolbar1.Top));
RegKeyClose(Key);

end;

{end
else
begin   }

{Application.MessageBox(PChar("&#209;&#235;&#229;&#226;&#224;: "+IntToStr(ToolBar1.Left)+"; сверху: "+IntToStr(ToolBar1.Top)+"."),
"положение",IDOK);  }
{end;  }

end;

procedure TForm1.FormCreate(Sender: TObject);
var control:byte;
begin

 Key := RegKeyOpenRead(HKEY_LOCAL_MACHINE,KeyWin);
 control:= strtoint(RegKeyGetStr(Key,"Control"));
RegKeyClose(Key);
//if control=2 then begin
// чтение из реестра
Key := RegKeyOpenRead(HKEY_LOCAL_MACHINE,KeyWin);
 toolbar1.Left := strtoint(RegKeyGetStr(Key,"Left"));
RegKeyClose(Key);
// чтение из реестра
Key := RegKeyOpenRead(HKEY_LOCAL_MACHINE,KeyWin);
 toolbar1.top:= strtoint(RegKeyGetStr(Key,"Top"));
RegKeyClose(Key);
//end
// else
// begin


 // movewindow(toolbar1.Handle,59,59,100,100,bool(1));
{GetWindowRect(ToolBar1.Handle, R);
Application.MessageBox(PChar("слева: "+IntToStr(r.Left)+"; всерху: "+IntToStr(r.Top)+"."),
"положение",IDOK);      }
//end;

end;


 
chery ©   (2009-12-23 00:14) [17]

простите меньше никак потому как мозККК отключается(= и ничео не получается)=


 
Petr V. Abramov ©   (2009-12-23 00:15) [18]


> Procedure TForm1.FormClose(Sender: TObject; var Action:
> TCloseAction);

ну и хрен с ним.

что от этого надо и что не получается?


 
chery ©   (2009-12-23 00:19) [19]

смысл в том что при условии что тул на контроле сохраняется в реестр тулбар1.топ,лефт,контрол, а если вне контрола то р.топ,лефт,контрол,
и по FormCreate все должно загружаться


 
chery ©   (2009-12-23 00:20) [20]

но увы то что курсивом не работает))=


 
Petr V. Abramov ©   (2009-12-23 00:27) [21]

блин, chery ©,
ты можешь сказать, ЧЕГО ТЕБЕ ИЗНАЧАЛЬНО НАДО от этой задачи?
ну окромя в армию не ходить


 
chery ©   (2009-12-23 00:34) [22]

ControlBar, на нем ToolBar, когда мы таскаем ToolBar по ControlBar или вытаскиваем из него и закрываем программу, то при открытии программы ToolBar должен быть там где мы его оставили, т.е. положение ToolBar должно сохраняться.


 
Petr V. Abramov ©   (2009-12-23 00:39) [23]


> chery ©   (23.12.09 00:34) [22]

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


 
Petr V. Abramov ©   (2009-12-23 00:40) [24]

за призрачную перспективу маленькой кружки фигового пива из Мурманска :)


 
chery ©   (2009-12-23 00:43) [25]

я ко выложил и программу написанную на депозит залил, получается вот что: когда перемещаешь ToolBar по ControlBar все сохраняется, а если вытащить за пределы ControlBar то не сохраняется а остается там же на ControlBar


 
chery ©   (2009-12-23 00:43) [26]


> за призрачную перспективу маленькой кружки фигового пива
> из Мурманска :)

пиво почтой или как?(=


 
chery ©   (2009-12-23 00:44) [27]


> я ко выложил

код


 
chery ©   (2009-12-23 00:45) [28]


> Petr V. Abramov

незнаю как с делфи, а с юмором все у вас супер(=


 
Petr V. Abramov ©   (2009-12-23 00:57) [29]


> а если вытащить за пределы ControlBar то не сохраняется
> а остается там же на ControlBar

а что ты сохраняешь? какие св-ва? код читать лень, прости, букаф много, если по наводящим вопросам будет неясно, придется читать


 
chery ©   (2009-12-23 01:00) [30]

Key := RegKeyOpenWrite(HKEY_LOCAL_MACHINE,KeyWin);
RegKeySetStr(Key,"Control","2");
RegKeyClose(Key);
Key := RegKeyOpenWrite(HKEY_LOCAL_MACHINE,KeyWin);
RegKeySetStr(Key,"Left",inttostr(toolbar1.Left));
RegKeyClose(Key);

 Key := RegKeyOpenWrite(HKEY_LOCAL_MACHINE,KeyWin);
RegKeySetStr(Key,"Top",inttostr(toolbar1.Top));
RegKeyClose(Key);
положение тулбара.
ладно я спать, рано вставать, утром заскочу посмотрю, на что смогу дам внятный ответ(=
спасибо что помогаете.
всем спокойной ночи.


 
Плохиш ©   (2009-12-23 02:28) [31]

А мне в облом портить глаза, читая какой-то набор букав, кем-то почему-то называемый "кодом". И вообще - это не уважение к отвечающим вываливать своё барахло, неудосужевшись его отформатировать.

PS. Слесарю - слесарево.


 
@!!ex ©   (2009-12-23 02:29) [32]

Parent"a тоже надо сохранять.


 
chery ©   (2009-12-23 08:18) [33]


> Parent"a тоже надо сохранять.

необязательно, главное тулбар.


 
asail ©   (2009-12-23 09:06) [34]

Если тебе надо сохранять/восстанавливать положение относительно экрана (а не формы, контролбара и т.д) то покури справку по этим методам: ClientToScreen и ScreenToClient. Ну, это если я прально твою задачу понял...
Для сохранения как-то так:
toolbar1.parent.ClientToScreen.
А для восстановления соответственно ScreenToClient...


 
@!!ex ©   (2009-12-23 10:22) [35]

> [33] chery ©   (23.12.09 08:18)
> необязательно, главное тулбар.

Я сказал что нужно сделать, чтобы тул бар нормально сохранялся.
Обязательно или нет - тебе решать.


 
StriderMan ©   (2009-12-23 11:20) [36]

А с тулбаром не все так просто, оказывается. Если его стащить с панельки - парентом у него будет некая вспомогательная самопоявившаяся формочка. Разбираюсь


 
MacroDenS ©   (2009-12-23 11:29) [37]

А с тулбаром не все так просто, оказывается. Если его стащить с панельки - парентом у него будет некая вспомогательная самопоявившаяся формочка

это точно, причем там походу создается объект класса TToolDockForm.
и вот как его при загрузке выкинуть на этот объект тоже не понял. Toolbar либо на форму ложится или вообще не показывается. Так что рановато автора запинали.


 
KilkennyCat ©   (2009-12-23 12:00) [38]

В Мурманске не все пиво фиговое. Я б даж сказал, получше, чем в Питере.


 
ANB   (2009-12-23 12:11) [39]


> В Мурманске не все пиво фиговое.

А еще там вкусная рыбка. Которая вполне может доехать посылкой. :)


 
chery ©   (2009-12-23 12:16) [40]

ну что может у кого нибудь появились мысли как сохранит положение тулбара кода он не на контроле и выглядит как отдельное окно? Просто у меня уже ничего не получается)))=


 
StriderMan ©   (2009-12-23 12:16) [41]

Че-то у меня кончились идеи как программно стащить ToolBar в свободное плавание, кроме как сгенерить цепочку сообщений, эмулирующих стаскивание мышью :D


 
chery ©   (2009-12-23 12:17) [42]


> В Мурманске не все пиво фиговое. Я б даж сказал, получше,
>  чем в Питере.

у нас пиво с местной пивоварни(пилегрим) просто шикарное((=


 
chery ©   (2009-12-23 12:18) [43]


> Че-то у меня кончились идеи как программно стащить ToolBar
> в свободное плавание, кроме как сгенерить цепочку сообщений,
>  эмулирующих стаскивание мышью :D

вот и я не знаю как в программе описать "стаскивание" тулбара.


 
StriderMan ©   (2009-12-23 12:18) [44]


> chery ©   (23.12.09 12:16) [40]

Проблема не в сохранении и загрузке, а в том как сделать программно тулбар "плавающим". Че-то я туплю. Мастера, ау!


 
chery ©   (2009-12-23 12:23) [45]


>  Мастера, ау!

у меня такое подозрение, что мастера либо спят еще, либо уже трудятся на работе(=


 
Anatoly Podgoretsky ©   (2009-12-23 13:19) [46]

> Petr V. Abramov  (23.12.2009 00:57:29)  [29]

Раз подписался, то читай.


 
chery ©   (2009-12-23 13:27) [47]


> Раз подписался, то читай

(=


 
MacroDenS ©   (2009-12-23 14:55) [48]

chery © посмотри может здесь что полезного найдешь http://www.delphi3000.com/articles/article_1010.asp?SK=
правда там на инглише


 
Ega23 ©   (2009-12-23 15:06) [49]

А как вы вообще ToolBar таскаете? Стандартный с вкладки Win32 я так и не смог сдвинуть никуда (Delphi 2007).


 
MacroDenS ©   (2009-12-23 15:09) [50]

А как вы вообще ToolBar таскаете?
выставь в инспекторе объекта:
DragKind = dkDock
DragMode = dmAutomatic


 
Ega23 ©   (2009-12-23 15:28) [51]

Что-то мне подсказывает, что нужно вдумчиво это дело просмотреть

procedure TToolBar.WndProc(var Message: TMessage);
var
 Control: TControl;
 CapControl: TControl;
 Msg: TMsg;

 function IsToolButtonMouseMsg(var Message: TWMMouse): Boolean;
 begin
   if GetCapture = Handle then
   begin
     CapControl := GetCaptureControl;
     if (CapControl <> nil) and (CapControl.Parent <> Self) then
       CapControl := nil;
   end
   else
     CapControl := nil;
   Control := ControlAtPos(SmallPointToPoint(Message.Pos), False);
   Result := (Control <> nil) and (Control is TToolButton) and
     not Control.Dragging;
 end;

 procedure SendDropdownMsg(Button: TToolButton);
 var
   Msg: TNMToolBar;
 begin
   FillChar(Msg, SizeOf(Msg), 0);
   with Msg, hdr do
   begin
     hwndFrom := Handle;
     idFrom := Handle;
     code := TBN_DROPDOWN;
     iItem := Button.Index;
   end;
   SendMessage(Handle, WM_NOTIFY, Handle, Longint(@Msg));
 end;

begin
 if not (csDesigning in ComponentState) then
 begin
   case Message.Msg of
     WM_MOUSEMOVE:
       begin
         { Call default wndproc to get buttons to repaint when Flat = True. }
         if IsToolButtonMouseMsg(TWMMouse(Message)) then
         begin
           { Prevent painting of flat buttons when they are dock clients }
           if TControlAccess(Control).DragMode <> dmAutomatic then
             DefaultHandler(Message);
         end
         else
           DefaultHandler(Message);
       end;
     WM_LBUTTONUP:
       { Update button states after a click. }
       if IsToolButtonMouseMsg(TWMMouse(Message)) then
       begin
         DefaultHandler(Message);
         if (CapControl = Control) or (Control is TToolButton) then
         begin
           with TToolButton(Control) do
             if Down and Grouped and AllowAllUp and (Style = tbsCheck) then
               Down := False;
           UpdateButtonStates;
         end
         else if (CapControl is TToolButton) or (TToolButton(Control).Style = tbsDropDown) then
           Exit;
       end;
     WM_LBUTTONDOWN, WM_LBUTTONDBLCLK:
       if IsToolButtonMouseMsg(TWMMouse(Message)) then
       begin
         { Check if mouse is clicked on a drop-down button"s arrow (for IE4+
           the arrow is within 13 pixels from the right, for IE3 there is no
           distinction - the entire button is used).  If an arrow click is
           detected then don"t process this mouse event - a TBN_DROPDOWN
           notification will be created for us by the default wndproc. }
         with TToolButton(Control) do
         begin
           { Allow IsControlMouseMsg to deliver message to button.
             This causes the clicking to happen. }
           if FInMenuLoop and Self.MouseCapture then
             MouseCapture := True;
           { When the style is tbsDropDown, and we have IE4+, we need
             to subtract the drop down button width of 14 pixels, otherwise
             it will cause the drop down menu to "stick" down }
           if (Style <> tbsDropDown) or
              (GetComCtlVersion >= ComCtlVersionIE4) and
              (TWMMouse(Message).XPos < Left + Width - 14) then
             inherited WndProc(Message);
         end;
         if not Control.Dragging then
           DefaultHandler(Message);

         if (TToolButton(Control).Style <> tbsDropDown) and
           ((TToolButton(Control).DropdownMenu <> nil) or
           (TToolButton(Control).MenuItem <> nil)) then
         begin
           try
             SendDropDownMsg(TToolButton(Control));
           finally
             { Here we remove WM_LBUTTONDOWN message sent and instead dispatch
               it as a WM_LBUTTONUP to get a Click fired. }
             Msg.Message := 0;
             if PeekMessage(Msg, Handle, WM_LBUTTONDOWN, WM_LBUTTONDOWN,
               PM_REMOVE) and (Msg.Message = WM_QUIT) then
               PostQuitMessage(Msg.WParam)
             else
             begin
               Message.Msg := WM_LBUTTONUP;
               Dispatch(Message);
             end;
           end;
         end;
         Exit;
       end;
   end
 end;
 inherited WndProc(Message);
end;


и сделать как-то также. В смысле - сообщение послать.


 
chery ©   (2009-12-23 17:32) [52]


> Ega23

посмотрим опробуем, спс(=


 
chery ©   (2009-12-23 17:34) [53]


> посмотри может здесь что полезного найдешь http://www.delphi3000.
> com/articles/article_1010.asp?SK=правда там на инглише

на первый взгляд что то есть, жаль все на англ., а у меня с ним не очень(=


 
chery ©   (2009-12-23 17:37) [54]


> А как вы вообще ToolBar таскаете?

MacroDenS прав просто выбираешь тулбар и в свойствах ставишь DragKind = dkDock


 
chery ©   (2009-12-23 20:47) [55]


> StriderMan ©   (23.12.09 12:16) [41]
> Че-то у меня кончились идеи как программно стащить ToolBar
> в свободное плавание, кроме как сгенерить цепочку сообщений,
>  эмулирующих стаскивание мышью :D

Есть идея:ввести переменную, если он на форме то она единица и координаты из памяти не грузятся. Если нет - то она равна нулю и приходится подгружать координаты из памяти, чтобы определить положение в пространстве экрана.


 
Ega23 ©   (2009-12-23 21:13) [56]


> Есть идея:ввести переменную, если он на форме то она единица
> и координаты из памяти не грузятся. Если нет - то она равна
> нулю и приходится подгружать координаты из памяти, чтобы
> определить положение в пространстве экрана.


Эта переменная у тебя уже есть, называется ToolBar1.Parent


 
Kyn66 ©   (2009-12-23 21:49) [57]


> chery ©   (22.12.09 23:57) [13]
> Вот вариант данной работы  http://depositfiles.com/files/xpc2ma774


А ты круто придумал, исходник для задания вопроса на депозит выкладывать. Сам то понял чего сделал? Или решил что сейчас все ломанутся его оттуда выкачивать? :)


 
chery ©   (2009-12-23 21:50) [58]


> Kyn66

ок скажи мне куда залить.


 
Ega23 ©   (2009-12-23 22:11) [59]


> ок скажи мне куда залить.


А он никому не нужен. Ты уже указал проблему.


 
chery ©   (2009-12-23 22:15) [60]


> А он никому не нужен.

просто подумал что может комуто интересно будет посмотреть программу.


 
Petr V. Abramov ©   (2009-12-23 23:09) [61]


> просто подумал что может комуто интересно будет посмотреть
> программу.

"программы" всем своей хватает, не работает нифига в полнолуние.


 
Ega23 ©   (2009-12-23 23:36) [62]


> просто подумал что может комуто интересно будет посмотреть
> программу.


Всю - увольте-с. это за деньги.
А вот вопрос ты задал интересный. В плане как ToolBar в отдельном окошке вывести. И это уже не за деньги, а за личный интерес. :)


 
Petr V. Abramov ©   (2009-12-23 23:45) [63]


> Ega23 ©   (23.12.09 23:36) [62]


> В плане как ToolBar в отдельном окошке вывести.

вопрос-то был как координаты сохранить, ась? :)


 
Ega23 ©   (2009-12-23 23:54) [64]


> вопрос-то был как координаты сохранить, ась? :)


ты снчала его принудительно в отдельное окно выведи...


 
Ega23 ©   (2009-12-23 23:59) [65]

С координатами-то всё просто:

procedure TForm1.Button3Click(Sender: TObject);
var
 tdf : TToolDockForm;
begin
 if not (tb1.Parent is TToolDockForm) then Exit;
 tdf := TToolDockForm(tb1.Parent);
 Label1.Caption := "left : " + IntToStr(tdf.Left) + "; top : " + IntToStr(tdf.Top);
end;


 
Petr V. Abramov ©   (2009-12-24 00:00) [66]


> Ega23 ©   (23.12.09 23:54) [64]
>
>

э. да. в основную :)


 
Ega23 ©   (2009-12-24 00:26) [67]

Короче - сделал. Автор, с тебя пиво.

procedure TForm1.Button4Click(Sender: TObject);
begin
 tb1.ControlState :=  tb1.ControlState + [csLButtonDown];
 tb1.BeginDrag(True, 5);
 tb1.EndDrag(True);
 TToolDockForm(tb1.Parent).Left := 100;
 TToolDockForm(tb1.Parent).Top := 100;
end;


 
Petr V. Abramov ©   (2009-12-24 00:37) [68]


> Ega23 ©   (24.12.09 00:26) [67]
смотрел  обсуждение. тут явно не пиво, а минимум банька, хрен с ним в Мурманске, но чтоб в Белое Море кунуться и свежей красной рыбкой заесть.
:)


 
Petr V. Abramov ©   (2009-12-24 00:47) [69]


> красной рыбкой заесть.

и чтоб не на базаре купленной, а тута пойманной, фиг c ним, пока мы в бане :)


 
Ega23 ©   (2009-12-24 00:49) [70]

Петрович, щас наступишь.


 
KilkennyCat ©   (2009-12-24 00:54) [71]


> Petr V. Abramov ©   (24.12.09 00:37) [68]

В Баренцево, а не Белое


 
chery ©   (2009-12-24 01:09) [72]


> Короче - сделал. Автор, с тебя пиво.procedure TForm1.Button4Click(Sender:
>  TObject);begin  tb1.ControlState :=  tb1.ControlState +
> [csLButtonDown];  tb1.BeginDrag(True, 5);  tb1.EndDrag(True);
>   TToolDockForm(tb1.Parent).Left := 100;  TToolDockForm(tb1.
> Parent).Top := 100;end;

это круто одна просьба объясни плз мне подоходчивее как долбоюзеру(=


 
Ega23 ©   (2009-12-24 01:17) [73]


> это круто одна просьба объясни плз мне подоходчивее как
> долбоюзеру(=


Имитация Drag"n"Drop с последующим переносом получившейся ToolDocForm в нужное место.

З.Ы. Код небезопасный. Надо ставить все проверки (DragKind = ..., DragMode = ..., if (toolBar.Parent is TToolDocForm)) и т.п. Но это уже тебе в качестве самостоятельного упражнения.
З.З.Ы. А совсем хорошо будет, если ты залезешь в код TToolBar.WndProc и очень внимательно по нему пройдёшься, со всеми inherited вызовами. Но это уже для тебя на пять с плюсом.


 
chery ©   (2009-12-24 01:17) [74]

проблема с программным выводом тула с контрола понятна, но проблема сохранения так и не решилаь(=


 
Ega23 ©   (2009-12-24 01:20) [75]


> проблема с программным выводом тула с контрола понятна,
> но проблема сохранения так и не решилаь(=


Что конкретно непонятно?

Впрочем, полюбому это уже утром, пора баиньки.


 
chery ©   (2009-12-24 01:23) [76]


> пора баиньки

это точно.

> Что конкретно непонятно

да многое, просто задача то стоит сохранение положения а ее разогнали во что-то поистине сложное и глобально-непонятное, но даже решив вопрос глобальный, задача толком с места не сдвинулась, потому как я совершенно непонял как сделать так что бы положение тул бара сохранялось в реестре)=


 
chery ©   (2009-12-24 01:24) [77]

увы наверно я слишком туп )))=


 
chery ©   (2009-12-24 01:31) [78]

ладно всем спокойной ночи


 
MacroDenS ©   (2009-12-24 09:34) [79]

Дабы с выносом Tollbar"а в отдельное окно разобрались (Спасибо Ega23 © )

Вот что тебе нужно для сохранения:

сохраняем 3 значения
1. Left:Integer;
2. Top:Integer;
3. isToolForm:Boolean; флаг ToolBar"а (в окне или нет)

дополнительные переменные:
Buffer:array[0..255] of Char;

Перед сохранением выесняешь в каком состоянии находится ToolBar
GetClassName(ToolBar1.parent.Handle, Buffer, 255);
если String[Buffer]="TToolDockForm" - значит ToolBar в окне
Left:=TToolDockForm(toolbar1.Parent).Left;
Top:=TToolDockForm(toolbar1.Parent).Top;
isToolForm:=True;
если не в окне, то
Left:=Toolbar1.Left;
Top:=Toolbar1.Top;
isToolForm:=false;

При загрузке параметров ориентируйся на флаг isToolForm
если True, то как описал Ega23 ©
только вместо статических значений присваиваешь сохраненные,
если False то просто присваиваешь значения ToolBar1.left/top.
Думаю для написания кода вполне достаточно


 
Kyn66 ©   (2009-12-24 09:40) [80]


> chery ©   (23.12.09 21:50) [58]
> > Kyn66ок скажи мне куда залить.

Обычно, на форуме задается вопрос и здесь же выкладывается чать кода, в котором закралась непонятка.(А про всякие там депозиты с лететбитами забудь)


 
Ega23 ©   (2009-12-24 10:43) [81]


> Перед сохранением выесняешь в каком состоянии находится
> ToolBar
> GetClassName(ToolBar1.parent.Handle, Buffer, 255);
> если String[Buffer]="TToolDockForm" - значит ToolBar в окне


А не проще ли
isToolForm := (ToolBar1.Parent is TToolDockForm);
?
:)


 
MacroDenS ©   (2009-12-24 11:07) [82]

Ну да, проще. Но для расширения кругозора автора тоже полезно.


 
chery ©   (2009-12-24 18:43) [83]

спасибо что помогли(=

>  Но для расширения кругозора автора тоже полезно.

и спасибо что заботитесь о моем кругозоре(=


 
chery ©   (2009-12-26 00:09) [84]

спасибо всем огромное за помощь, всех с наступающим



Страницы: 1 2 3 вся ветка

Текущий архив: 2010.03.14;
Скачать: CL | DM;

Наверх




Память: 0.71 MB
Время: 0.018 c
15-1261938570
Anatoly Podgoretsky
2009-12-27 21:29
2010.03.14
Литвин президент!


15-1261737888
Piter
2009-12-25 13:44
2010.03.14
Попросили помочь убрать AdWare


2-1263287890
lewka
2010-01-12 12:18
2010.03.14
Работа с формулами в Word 2007


2-1263041766
TRSteep
2010-01-09 15:56
2010.03.14
Динамические массивы в функциях


15-1261765384
b/@.
2009-12-25 21:23
2010.03.14
На чем основана бизнес-модель казуальщиков...