Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 516
от 28.06.2006, 14:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 366, Экспертов: 67
В номере:Вопросов: 6, Ответов: 18


Вопрос № 47058: Здравствуйте, эксперты! Подскажите, п-та, как организовать программно выделение строк в DBgrid....
Вопрос № 47063: Добрый вечер, уважаемые! Скажите, пожалуйста, можно ли у стандартного Виндового Блокнота спрятать курсор, чтобы нельзя было редактировать текст?...
Вопрос № 47069: Например у меня имеется на форме edit1 и listbox1 с базой слов. вопрос- Как сделать, чтобы найти из listbox нужное слово т.е при написании 1 буквы выводится первая буква по алфавиту, 2-я буква - поиск слова по 2 буквам,3-я буква - поиск слова по трем...
Вопрос № 47112: Здравствуйте Эксперты! У меня к вам такой вопрос: Каким образом можно сделать форму не стандартной (например, круглой или овальной ). Пришлите пожалуйста пример или напишите адрес откуда можно скачать литературу....
Вопрос № 47113: Уважаемые эксперты, я понимаю что вопрос несложный... в о бщем нужно сделать чтобы раскрывающиеся окна не вылазили за границы главного окна. Т.е сначала я свойства стиля формы оставляю обычными, а при открытии делаю окна дочерними модальными... но как...
Вопрос № 47140: Здравствуйте Уважаемые Эксперты! Какой код у клавиш Вверх,Вниз,Влево,Вправо?(у Enter - #13,у а- #192...)...

Вопрос № 47.058
Здравствуйте, эксперты!
Подскажите, п-та, как организовать программно выделение строк в DBgrid.
Отправлен: 22.06.2006, 14:31
Вопрос задал: Ramil (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Gh0stik
Здравствуйте, Ramil!

Смотрите пример:


procedure TFormDB.Button1Click(Sender: TObject);
var i:integer;
begin
DBGrid1.Options:=DBGrid1.Options+[dgRowSelect,dgMultiSelect];
for i:=2 to 5 do
begin
Tb_elektr.RecNo:=i;
DBGrid1.SelectedRows.CurrentRowSelected:=true;
end;
end;



Где Tb_elektr - имя Вашей базы.
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Студент)
Ответ отправлен: 22.06.2006, 14:53

Отвечает: Shady
Здравствуйте, Ramil!

Вот пример.
http://progers.net.ru/pages/451.html

Приложение:

Ответ отправил: Shady (статус: 4-ый класс)
Ответ отправлен: 22.06.2006, 16:15


Вопрос № 47.063
Добрый вечер, уважаемые! Скажите, пожалуйста, можно ли у стандартного Виндового Блокнота спрятать курсор, чтобы нельзя было редактировать текст?
Отправлен: 22.06.2006, 14:59
Вопрос задал: Савенко Вадим Иванович (статус: 2-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Shady
Здравствуйте, Савенко Вадим Иванович!

Не проще ли написать, раз вы программист, подобие блокнота с необходимыми Вам функциями. В Delphi есть стандартные приложения в примерах, где есть подобные готовые разработки, Вам останется подредактировать свойство readonly.
Ответ отправил: Shady (статус: 4-ый класс)
Ответ отправлен: 22.06.2006, 16:18

Отвечает: Serg_6667
Здравствуйте, Савенко Вадим Иванович!

Для примера взял Trichedit
Как я понимаю, Вы пытались сделать что-то типа того, что в приложении. Но просто каретка будет появляться при активировании елемента редактирования, клике мышкой, изменении и т.д. То есть, надо отлавливать все эти действия и прописывать везде hidecaret(richedit1.Handle);

Приложение:

Ответ отправил: Serg_6667 (статус: 3-ий класс)
Ответ отправлен: 23.06.2006, 10:42


Вопрос № 47.069
Например у меня имеется на форме edit1 и listbox1 с базой слов. вопрос- Как сделать, чтобы найти из listbox нужное слово т.е при написании 1 буквы выводится первая буква по алфавиту, 2-я буква - поиск слова по 2 буквам,3-я буква - поиск слова по трем буквам и так далее. Спасибо!
Отправлен: 22.06.2006, 16:25
Вопрос задал: Ghora (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Shady
Здравствуйте, Ghora!
Все что вам нужно - в событии OnChnage компонента Edit1 написать вот такую строку:
ListBox1.Perform(LB_SELECTSTRING,-1,longint(Pchar(Edit1.text)));

И все.
Ответ отправил: Shady (статус: 4-ый класс)
Ответ отправлен: 22.06.2006, 16:42


Вопрос № 47.112
Здравствуйте Эксперты! У меня к вам такой вопрос: Каким образом можно сделать форму не стандартной (например, круглой или овальной ). Пришлите пожалуйста пример или напишите адрес откуда можно скачать литературу.
Отправлен: 23.06.2006, 10:09
Вопрос задал: Ram (статус: Посетитель)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Ерёмин Андрей
Здравствуйте, Ram!
Проще всего использовать готовый компонент - Shaped Form например. Просто задаёте чёрно-белую картинку-шаблон и форма готова!
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 23.06.2006, 10:17
Оценка за ответ: 5

Отвечает: Serg_6667
Здравствуйте, Ram!

Для того, чтобы придать другую форму можно использовать регионы. В приложении пример.
Чтобы создать форму, допустим, многоугольную, можна использовать
CreatePolygonRgn

Приложение:

Ответ отправил: Serg_6667 (статус: 3-ий класс)
Ответ отправлен: 23.06.2006, 10:27
Оценка за ответ: 5

Отвечает: LanK
Здравствуйте, Ram!

Я лично не использую сторонние компоненты, хотя, вариант от Ерёмин Андрей видимо самый простой.

А на самом деле всё можно и не сложно сделать руками - если Вам например овальная форма нужна - прочитайте готовый код например здесь:

http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=673

P.S. если хотите у меня есть готовый проект маленький пример еще для Дельфи3 :) работает и на 7ке. Пишите в личную почту.
---------
Пусть все будет хорошо! Давайте жить дружно! :) И будет жить еще лучше!
Ответ отправил: LanK (статус: Студент)
Ответ отправлен: 23.06.2006, 10:39
Оценка за ответ: 3

Отвечает: Gh0stik
Здравствуйте, Ram!

Изменить вид формы можно при использовании регионов.

Вот привожу Вам пример по работы с регионами:


procedure TForm1.Button5Click(Sender: TObject);
var FormRgn: HRGN;
P:array[0..7] of TPoint;
w,k:integer;
begin
Form1.Height:=500; Form1.Width:=500;
w:=form1.Width;
k:=w div 3;
P[0]:=Point(k,0); P[1]:=Point(w-k,0);//заполняем массив точек
P[2]:=Point(w,k); P[3]:=Point(w,w-k);
P[4]:=Point(w-k,w); P[5]:=Point(k,w);
P[6]:=Point(0,w-k); P[7]:=Point(0,k);
FormRgn:=CreatePolygonRgn(P,8,ALTERNATE);//создаем регион на основе массива точек.
SetWindowRgn(form1.Handle, FormRgn, true);
end;


В итоге у Вас должно получиться 8-угольное окно!!!

Еще можете почитать по следующим ссылкам:
http://delphiworld.narod.ru/base/chg_form_rgn.html
http://delphiworld.narod.ru/base/create_controls_with_any_shape.html

Удачи!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Студент)
Ответ отправлен: 23.06.2006, 11:03
Оценка за ответ: 5

Отвечает: Shady
Здравствуйте, Ram!
Попробуйте.
http://ags.joblist.ru/k/2-172.html

Приложение:

Ответ отправил: Shady (статус: 4-ый класс)
Ответ отправлен: 23.06.2006, 17:23
Оценка за ответ: 5
Комментарий оценки:
Благодарю. Красиво!

Отвечает: Виктор Пырлик
Здравствуйте, Ram!
Если вопрос только получить такую форму – используйте компоненты сторонних разработчиков, я ими не пользуюсь, поэтому не могу дать ссылки. А ВТО если хочется самому сделать, тогда, всё очень просто: Любые операции с окнами (формами) основаны на функциях АПИ Windows.
Простая и понятная книга в этом плане: Win32 API Р.Д. Верма, www.programme.ru
К таким функциям относятся например, функции работы с областями: CreateRectRgnInderect(RECT*)
CreateEllipticRgn
И другие, как правило имеющие в названии *Rgn*
Функции работы по отсечению: *Clip*
Под рукой нет на паскале, привожу на C++:

На выходе получаем прямоугольную форму с двумя дырками (флаг отсичения RGN_XOR).
Для перевода на паскаль ндо заменить равенство на := и переменные можно передать напрямую ну, или по @. И всё.

Приложение:

---------
Не результат важен, процесс есть двигатель всего!

Ответ отправил: Виктор Пырлик (статус: 1-ый класс)
Ответ отправлен: 23.06.2006, 20:46
Оценка за ответ: 5


Вопрос № 47.113
Уважаемые эксперты, я понимаю что вопрос несложный... в общем нужно сделать чтобы раскрывающиеся окна не вылазили за границы главного окна. Т.е сначала я свойства стиля формы оставляю обычными, а при открытии делаю окна дочерними модальными... но как из закрыть потом, вернув им свойства form.style="normal;?" очень нужно, подскажите пожалуйста
Отправлен: 23.06.2006, 10:10
Вопрос задал: Сапожников Владимир Алексеевич (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Shcherbakov Anton
Здравствуйте, Сапожников Владимир Алексеевич!
если вас устроит.. то делайте mdi приложени и у вас дочернии окна нигодна не вылезут за пределы главного окна.
Ответ отправил: Shcherbakov Anton (статус: 2-ой класс)
Ответ отправлен: 23.06.2006, 10:21
Оценка за ответ: 1
Комментарий оценки:
Я знаю что нужно делать mdi, просто ты наверное видел что mdi-формы всегда открыты, а нужно чтобы были закрыты, а свойство дочернего окна появлялось при открытии

Отвечает: Татьяна
Здравствуйте, Сапожников Владимир Алексеевич!
Как вариант (конечно, если данная форма вам больше не нужна), в событии onClose дочерней формы пропишите
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;

---------
Возможно все. И ничего возможно тоже.
Ответ отправила: Татьяна (статус: Студент)
Ответ отправлен: 23.06.2006, 16:48

Отвечает: Виктор Пырлик
Здравствуйте, Сапожников Владимир Алексеевич!
Можно подробнее. А то слишком простой вопрос, даже и не понятно, какой нужен ответ...
Модальным окно Вы можите сделать толко при вызове его ShowModal, во всех остальных случаях, окно может быть или fsStayOnTop - всегда на верху, или fsMDIChild - дочернее окно MDI приложения (MS Office например) или fsNormal, или fsMDIForm - хазяин MDI. Что Вы имели ввиду?
Есл хотите программно закрыть модальное окно, тогда: как минимум, надо или воспользоваться одной из функций таимера - рекция по событию, или определить новый поток и из него уже закрыть модальное окно (любым Вам известным способом) - реакция по условию.
Если надо чтобы дочернее оконо не перекрывало главное, то, во первых: установите свойство дочернего окна Posion = poDesktopCenter (например), во вторых, запретите пользователю раскрывать его полностью: BorderIcons [biMaximize = false], в третих: или получите размер главной формы перед запусом модальной и уменьшите на сколько считаете нужным, или, что практичнее, проектируйте интерфейс с учетом требований.

---------
Не результат важен, процесс есть двигатель всего!
Ответ отправил: Виктор Пырлик (статус: 1-ый класс)
Ответ отправлен: 23.06.2006, 21:03


Вопрос № 47.140
Здравствуйте Уважаемые Эксперты!
Какой код у клавиш Вверх,Вниз,Влево,Вправо?(у Enter - #13,у а- #192...)
Отправлен: 23.06.2006, 14:26
Вопрос задал: Исаков Евгений Владимирович (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Gh0stik
Здравствуйте, Исаков Евгений Владимирович!

Вместо кодов проще воспользоваться константами, которые описаны в Delphi:


.....
VK_HOME Home key
VK_LEFT Left Arrow key//Влево
VK_UP Up Arrow key// Вверх
VK_RIGHT Right Arrow key//Вправо
VK_DOWN Down Arrow key//Вниз
VK_SELECT Select key
VK_PRINT Print key (keyboard-specific)
VK_EXECUTE Execute key
VK_SNAPSHOT Print Screen key
VK_INSERT Insert key
......


А найти их код можно воспользовавшись командой ORD()

Удачи!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Студент)
Ответ отправлен: 23.06.2006, 14:39
Оценка за ответ: 5
Комментарий оценки:


Отвечает: Ерёмин Андрей
Здравствуйте, Исаков Евгений Владимирович!
Gh0stik правильно намекнул. Именованными константами удобнее пользоваться. Ну а чтобы ответить полностью на ваш вопрос, привожу сами коды:
[LEFT] - #25; [UP] - #26; [RIGHT] - #27; [DOWN] - #28.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 23.06.2006, 15:26
Оценка за ответ: 5
Комментарий оценки:
Спасибо!

Отвечает: Shady
Здравствуйте, Исаков Евгений Владимирович!
Коды клавиш в приложении.

Приложение:

Ответ отправил: Shady (статус: 4-ый класс)
Ответ отправлен: 23.06.2006, 17:13
Оценка за ответ: 5

Отвечает: Решетник Д
Здравствуйте, Исаков Евгений Владимирович!
вот маленькая программка на Паскале для вывода кодов клавиш (большинства)...
можете ее видоизменить под Делфи..

Приложение:

---------
Жизнь коротка, чтобы писать на ассемблере

Ответ отправил: Решетник Д (статус: 9-ый класс)
Ответ отправлен: 23.06.2006, 20:20
Оценка за ответ: 3


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное