Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi (до версии 2009) - часть 6

Автор: A1exSun
Дата сообщения: 09.12.2011 22:46
Frodo_Torbins
А как сделать чтоб в Edit1 нельзя было вводить с клавиатуры текст, выделять и чтоб не было курсора - Enabled = False?
Так поле вроде серым становиться, а мне это не нужно.

Добавлено:

Цитата:
Да, каждому итему списка можно назначить горячую клавишу.

Нашел ActionList (называется Events) и в нем OnКeyDown, в него писать имя обработчика? А где сам код клавиши писать?
А понял вроде.

Добавлено:
akaGM
Сделал как ты написал, ag для всех кнопок один. То есть поменял его в Button2, он поменялся везде.

Добавлено:
Перезапустил дельфи - у всех отдельный. Wtf?
Итого написал один обработчик, для цифр:

Код: procedure TForm1.ButtonNumClick(Sender: TObject);
begin
Area.Text := Area.Text + IntToStr((Sender as TButton).Tag);
end;
Автор: akaGM
Дата сообщения: 09.12.2011 23:46
A1exSun
то есть?
в каждом поле надо ввести своё значение, можно любое и в любом порядке...
что не так?
Автор: A1exSun
Дата сообщения: 10.12.2011 00:13
akaGM
Уже все так, то был какой-то глюк, или я что-то наклацал

Как TEdit сделать только для вывода теста, чтоб в него нельзя было писать и выделять в нем? Enabled установить в False, по-другому никак?
Автор: akaGM
Дата сообщения: 10.12.2011 00:28
A1exSun

Цитата:
Как TEdit сделать только для вывода теста, чтоб в него нельзя было писать и выделять в нем? Enabled установить в False, по-другому никак?
а зачем тогда Едит? :)
для вывода и лейбла хватит...
Автор: A1exSun
Дата сообщения: 10.12.2011 00:40
akaGM
Поле красивее

Как из текста последний символ удалить?
И еще, как проверить что в тексте не больше одной точки? Есть стандартные функции?
Автор: akaGM
Дата сообщения: 10.12.2011 01:31
A1exSun

Цитата:
Поле красивее

а в твоём ХРЕ бордюры/бевелы у лейблов ещё не появились?
тогда сторонний компонент подключай...


Цитата:
как проверить что в тексте не больше одной точки?
в строке что ли?

index = pos()
if index > 0 уже одна есть
if pos(index...) > 0 больше одной
else точно одна
else ниодной

как-то так...


Цитата:
Как из текста последний символ удалить?

да что ты текстом называешь, string, pchar, memo?
в некотрых случаях достаточно setlength(TEXT, length(TEXT)-1)

смотри общие юниты sysutils и strutils
там всё это есть...

чё-то рано ты из паскаля ушёл...
Автор: ShIvADeSt
Дата сообщения: 10.12.2011 03:11
TPanel прекрасно эмулирует едит. Ловить естессно нажатия клавиш на уровне формы. Кидаешь TLabel на панель, выравнивание справа и уже почти калькулятор, все остальное - просто курение хелпа по работе со строками.
Либо у TStaticText тоже можно бордюры задавать.
Для многих вопросов достаточно Pos, Delete, Length, Copy, Insert. По крайней мере когда я в свое время делал калькулятор для вычисления истинности логических выражений - я только их использовал.
Автор: A1exSun
Дата сообщения: 10.12.2011 11:56
Как самому вызвать procedure TForm1.ButtonEqualClick(Sender: TObject); ?
Автор: Frodo_Torbins
Дата сообщения: 10.12.2011 12:19
A1exSun
Так как вызывают обычную процедуру. В скобках впишите любую кнопку, либо можно саму форму.
Кстати вы читали статью, на которую я давал ссылку? Думаю что если бы читали, то такой простой вопрос не задавали бы
Автор: ShIvADeSt
Дата сообщения: 10.12.2011 13:50
Frodo_Torbins

Цитата:
Так как вызывают обычную процедуру. В скобках впишите любую кнопку, либо можно саму форму.

Хм не совсем верно ИМХО, особенно если данная процедура принадлежит нескольким кнопкам и результат зависит от тага.
Все таки правильнее будет так
ButtonEqual.Click;
либо
ButtonEqual.Perform(BN_CLICKED, 0, 0)
последний пример пишу по памяти, но суть думаю понятна. Особенно если нужно не клик послать, а другое сообщение.
Автор: A1exSun
Дата сообщения: 10.12.2011 14:56
ShIvADeSt

Цитата:
ButtonEqual.Click;
либо
ButtonEqual.Perform(BN_CLICKED, 0, 0)

Ошибка и так и так.
Автор: alex1334
Дата сообщения: 10.12.2011 18:00
Добрый день.
У меня есть длитель выполняющаяся цикличекая процедура вычисления. существует ли какой нибудь оператор чтобы как то отдавать часть времени для обработки событий на форме. а то программа перестает реагировать даже на события завершения приложения
Автор: akaGM
Дата сообщения: 10.12.2011 18:30
alex1334
попробуй в этом цикле вызывать Application.ProcessMessages
можно не каждую итерацию, а хотя бы каждую 10-ую,
в общем, это подбирается отдельно...
Автор: perceptron
Дата сообщения: 10.12.2011 21:49
2 A1exSun:
как уже советовал ShIvADeSt должно работать

Код:
ButtonEqual.Click;
Автор: A1exSun
Дата сообщения: 10.12.2011 21:56
perceptron

Цитата:
Кстати вы читали статью, на которую я давал ссылку?

Частично

Цитата:
как уже советовал ShIvADeSt должно работать


Код: ButtonEqualClick(ButtonEqual.Click);
Автор: Frodo_Torbins
Дата сообщения: 10.12.2011 23:17
A1exSun
Вы все в кучу смешали. Если вызываете метод кнопки (у вас Click) то больше ничего делать не надо, тем более что он не является функцией и значений не возвращает. Если же вызываете сразу обработчик (у вас ButtonEqualClick), то передавайте туда либо саму кнопку, либо форму.
А статью продолжайте читать, и просветление обязательно наступит
Автор: Corsairs
Дата сообщения: 10.12.2011 23:25
А по моему вопросу (о саморисованных диалогах - сам вопрос на предыдущей странице) кто-нибудь подскажет, что почитать?
Автор: ShIvADeSt
Дата сообщения: 11.12.2011 00:58

Цитата:
Я хочу использовать в программе нестандартный диалог. Как я понимаю, для рисования используется редактор ресурсов (кстати, каким лучше всего воспользоваться?), но вот что делать дальше? Как вызвать этот диалог, и как организовать взаимодействие с ним? (т.е. передачу данных в диалог, обработку в диалоге и передачу данных в основную прогу)

Примерно так (естессно что константы и функции свои)

Я диалоги создавал Restorator 2007
hMain:=DialogBox(hInstance, PChar(MAINBOX), 0, @DlgFunc); - вызов диалога MAINBOX из ресурса

function DlgFunc(hWnd: hwnd; Msg: dword; wParam: WPARAM; lParam: LPARAM): Longbool; STDCALL; - основная функция для обработки сообщений диалога

А далее ловишь оконные сообщения и обрабатываешь их, например

Код:
case Msg of
WM_INITDIALOG:
WM_HOTKEY:
case HIWORD(lParam) of
VK_F10: FillEdit;
end;
WM_LBUTTONDOWN:
begin
Cur:=MakePoints(lParam);
if PtInRect(CapRect,Cur) then SendMessage(hWnd,WM_SYSCOMMAND,$F012, 0);
end;
WM_CLOSE:
begin
UnregisterHotKey(hWnd,0);
Shell_NotifyIcon(NIM_DELETE, @IconData);
EndDialog(hWndAbout,0);
EndDialog(hWnd, 0);
end;
WM_DRAWITEM: OnDrawItem(PDRAWITEMSTRUCT(lParam));
WM_COMMAND:
case LOWORD(wParam) of
SC_CLOSE:SendMessage(hWnd,WM_CLOSE,0,0);
SC_MINIMIZE:ShowWindow(hWnd,SW_HIDE);
SC_RESTORE: begin
ShowWindow(hWnd,SW_SHOW);
SetForeGroundWindow(hWnd);
end;
Автор: akaGM
Дата сообщения: 11.12.2011 07:52
Corsairs

Цитата:
Я хочу использовать в программе нестандартный диалог.
нестандартный как противоположность стандартным, open/save/font/color/about?
или просто диалоговая форма с функционалом под свою задачу?
что?
может быть прежде чем погружаться в дебри АПИ, посмотреть какие-нибудь готовые с исходниками? это если я правильно понял вопрос...
вернее надо так спросить:
приложение основано на VCL или API?

а редактор ресурсов может быть любым, я вот до сих пор пользуюсь борландовским Resource Workshop, тебе что на выходе надо, .rc, инклуды?
Автор: Corsairs
Дата сообщения: 11.12.2011 09:37
ShIvADeSt
Попробую...

akaGM
Я имел в виду вариант
Цитата:
просто диалоговая форма с функционалом под свою задачу

Да, программа на VCL...

А где можно посмотреть готовые, с исходниками?

Как я понимаю, для проекта надо .res (и он компилится из .rc)
Автор: akaGM
Дата сообщения: 11.12.2011 10:33
Corsairs
значит, ты новичок в дельфях?

для поиска примеров/компонентов с сорсами всегда начинай с торри:
http://torry.net/pages.php?s=69

особое внимание обращай на компоненты с пометкой FWS (freeware with sources)

Цитата:
Как я понимаю, для проекта надо .res (и он компилится из .rc)
забудь...
редактором ресурсов у тебя будет дельфи :)
Автор: salexn1
Дата сообщения: 13.12.2011 12:54
Сколько юзаю дельфи, но делать диалоги в редакторе ресурсов - это что-то новенькое.
Чем Дельфовский дизайнер-то не устроил?
Автор: Corsairs
Дата сообщения: 13.12.2011 13:14
Ну самоучка я... В основном при программировании использую метод научного тыка... (а также Гугл, DelphiWorld)
Вот и спрашиваю - что почитать по этой теме... (и примерчики посмотреть - как делать и что)

Цитата:
Чем Дельфовский дизайнер-то не устроил?
А где его искать?
Автор: salexn1
Дата сообщения: 13.12.2011 13:25
Corsairs
А Дельфи хоть установлен?
Начни с любой книги... Судя по всему еще ни строчки кода на Дельфи не было написано.

тут простой пример с диалоговым окном
хттр://ifolder.ru/27548482
Автор: akaGM
Дата сообщения: 13.12.2011 13:34
Corsairs
фигня...
все мы в большинстве своём такие и ничего, живём...
главное: не стесняйся спрашивать, кто наезжает -- сам комплексует, а нормальные люди всегда помогут, ответят, обогреют... так, что-то не я того...

диалог в VCL -- это та же форма, теже контролы и тд только со спец. атрибутами, кот. выставляются в инспекторе и всё...
у тебя какая версия?
в любом случае посмотри ссылки разные, позднее, если смогу напишу подробнее, если к тому времени не помогут более знающие люди...
Автор: Corsairs
Дата сообщения: 13.12.2011 14:05
Установлен D7.
Когда я был студентом - мы учили Turbo Pascal (сначала на MSX Yamaha, а потом на 286...), так что кое-что умею и могу...

akaGM
Да понял я... И тоже стараюсь помочь, если в моих силах...

Цитата:
диалог в VCL -- это та же форма, те же контролы
- ну, я так и представлял, просто не совсем понимаю механизм работы со всем этим... Вот и спрашиваю...
Автор: Frodo_Torbins
Дата сообщения: 13.12.2011 14:36
Corsairs
Ссылки в тему: http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1266 http://www.delphikingdom.com/asp/viewitem.asp?catalogid=729 Вообще Королевство Делфи очень полезный сайт для новичка, я сам с него начинал. Сейчас правда там уже иногда попадается устаревшая информация, но в разделах Hello, World! и Лицей вы с такой врядли столкнетесь. А свежие новости всегда можно найти тут: delphifeeds.ru.
Автор: ShIvADeSt
Дата сообщения: 14.12.2011 03:18
Corsairs
То что я писал про диалоги - не читай, это не для новичков.

salexn1

Цитата:
Сколько юзаю дельфи, но делать диалоги в редакторе ресурсов - это что-то новенькое.
Чем Дельфовский дизайнер-то не устроил?

Не новенькое как минимум
Ну хотя бы тем, что при помощи VCL нельзя сделать 20 килобайтное приложение. Плюс на винапи при достаточном скиле можно замутить ЛЮБОЙ внешний вид приложения, а на VCL упираешься в ограничения и либо переопределяешь оконные функции, либо пишешь сам контролы. Да и для себя полезно, сделаешь апишное приложение, заодно с сообщениями на ты будешь и многие другие вещи освоишь (типа самому кнопку во всех состояниях рисовать или менюшку).
Плюс иногда очень удобно грузить из ресурсов контролы и работать с ними. например когда делаешь окно настроек с кучей различных радио, чек и обычных кнопок.
Автор: Cryogen2003
Дата сообщения: 15.12.2011 09:18
Добрый день.

В ближайшее время на работе переходят с LDAP на LDAPS. Для проверки пользователей с их правами, группами и так далее пользуюсь NTSet. Есть ли в этом наборе компонент поддержка LDAPS (ну если кто-то пользуется данным набором компонент)?

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

Сейчас код такой:

[more=Текущий код]
....
Connection := TADOConnection.Create(Application);
Try
Connection.Provider := 'ADsDSOObject';
Connection.ConnectionString := 'Provider=ADsDSOObject;Password=' +
UserPassword + ';User ID=' + UserName + ';Encrypt Password=True;' +
'Integrated Security=SSPI;Mode=Read;Bind Flags=0;ADSI Flag=3';
Connection.LoginPrompt := False;
Connection.Mode := cmRead;
Connection.LoginPrompt := False;
Connection.Connected := True;

Query := TADOQuery.Create(Application);
Try
Query.Active := False;
Query.Connection := Connection;
Query.CursorType := ctStatic;
Query.Parameters.Clear;
SQL := 'select userPrincipalName, Name, ' +
'sAMAccountName, mail, userAccountControl from '+ #39 +
LDAPServer + #39 + ' where ObjectClass=' + #39 + 'User' +
#39 + ' and userAccountControl = 2 ';
Query.SQL.Clear;

Query.SQL.Add(SQL);
Query.Active := True;
Finally
Query.Free;
End;
Finally
Connection.Free;
End;
[/more]
Слетает на коде Query.SQL.Add(SQL); - пишет таблица отсутствует (((
что делать?
LDAPServer = ldaps://srv-dc4.domen.ru:636/OU=BANK,DC=domen,DC=RU
При ldap://srv-dc4.domen.ru:389/OU=BANK,DC=domen,DC=RU все работает
Автор: RuPurple
Дата сообщения: 17.12.2011 12:02
Подскажите, пожалуйста, имеется ли возможность у компоненты TWebBrowser прикрепить его границы к границам окна, так чтобы при изменении размеров окна размер области просмотра веб-браузера тоже менялся?
Имеется ли в природе компонента для Дельфи для открытия и просмотра html-страничек, которая не использует для этой цели Internet Explorer? (Наличие функции по загрузке страничек из сети интернет необязательно.)

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374

Предыдущая тема: MPO File


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.