Текущий архив: 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("Ñëåâà: "+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