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

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


Информационный Канал Subscribe.Ru

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

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

Выпуск № 370
от 30.01.2006, 03:24

Администратор:Калашников О.А.
В рассылке:Подписчиков: 244, Экспертов: 60
В номере:Вопросов: 9, Ответов: 23


Вопрос № 33941: Уважаемые Эксперты! Как сделать так чтобы окно появлялось вовремя загрузки основной программы, а затем изчезала с прогрессбаром. прогрессбар показывает процесс загрузки. Заранее благодарен с/у Ерканат ...
Вопрос № 33989: Решил освоить дельфу. Решил написать для своей локальной сети, свою программу для чата. Возникло несколько вопросов. Какой протокол лучше всего использовать. Надо чтобы без отдельного сервера работала. И как сделать чтобы например как аська. Если...
Вопрос № 33998: Как сделать приложение, которое всегда имело бы XP-подобный стиль элементов управления и самой формы, даже при выполнении в Win98, например. Я видел такие проги, так завидно......
Вопрос № 34002: Здравствуйте уважаемые эксперты. Есть некий массив PRD[i, j] содержащий "1" и "0" например: Y A |00000000000000000000000000000 |00000011111111111110000011110 |00011111111111111111111111000 |00...
Вопрос № 34006: Здравстуйте уважеамые эксперты. Интересует такой вопрос. Можно ли средствами Delphi заблокировать по сети мышку и клавиатуру пользователя или заблокировать компьютер, наподобие программы WinLock? Задумка такая, пользователь полез куда не нужно, блоки...
Вопрос № 34014: Здравствуйте уважаемые эксперты. Нужна помощь в следующем: есть база данных нужно чтобы при нажатии на кнопку для каждой записи создавалась своя форма...
Вопрос № 34015: Здравствуйте увважаемые эксперты. Нужна помощь в следующем: есть база данных нужно чтобы при клике по некой кнопке для текущей записи должна создаваться отдельная форма с возможностью редактирования. Заранее спасибо....
Вопрос № 34024: уважаемые эксперты подскажите , на делфи 7 с помощью wmi собираю данные о железе компьютера и записываю их в striggrid , каким образом их можно передать в БД под управлением sql 2000 ????(сейчас там тестовая БД,пока она не нормализована, из нее получ...
Вопрос № 34028: Здравствуйте, Уважаемые эксперты! У меня к вам 2 вопроса: 1. Как при нажатии на кнопку в програме, написанной на Delphi запустить аплет панели управления TimeDate.cpl (использование WinExec не предлагать) . 2. Как программно сменить ...

Вопрос № 33.941
Уважаемые Эксперты!
Как сделать так чтобы окно появлялось вовремя загрузки основной программы, а затем изчезала с прогрессбаром. прогрессбар показывает процесс загрузки.
Заранее благодарен с/у Ерканат
Отправлен: 24.01.2006, 08:16
Вопрос задал: ERA (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Ujin Antikvar
Здравствуйте, ERA!

Сделать это проще простого.
Создаешь дополнительную форму (у меня она Form2 у тебя она может быть любой другой), которая будет появляться во время загрузки основной программы кидаешь на нее ProgressBar и Timer.
Далее в основной форме в событии OnCreate пишешь следующее

procedure TForm1.FormCreate(Sender: TObject); //событие OnCreate основной (главной) формы
begin
Form2:=TForm2.Create(Application); //Делаем форму заставки главной
Form2.ShowModal; //Показываем ее
Form2.Free; //И в конце уничтожаем
end;

Затем на форме заставки (та которая должна появляться во время загрузки основной проги) в Timer'e в событии OnTimer пишешь следующее

procedure TForm2.Timer1Timer(Sender: TObject);
begin
ProgressBar1.Position:=ProgressBar1.Position+1;
if ProgressBar1.Position=100 then
Close;
end;

Вот собственно и все. Полный код см. в приложении.
И не забудь подключить в uses эту форму к основной и основную к форме заставки

Приложение:

---------
"Будущее принадлежит тем, кто верен своей мечте" - Элеонора Рузвельт

Ответ отправил: Ujin Antikvar (статус: 5-ый класс)
Отправлен: 24.01.2006, 11:38
Оценка за ответ: 4
Комментарий оценки:
Мне нужно чтобы форма с прогресс-баром была запущена в параллельно, в данном случае оно не так работает

Отвечает: Злоумышленник
Здравствуйте, ERA! Шлю пример в приложении, почитай. А вот от меня модификация, заточенная под прогресбар из твоего вопроса:
program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3},
Unit4 in 'Unit4.pas' {Form4},
Unit5 in 'Unit5.pas' {Form5},
SysUtils;

{$R *.res}

begin
Application.Initialize;
with TForm5.Create(nil) do
try
progressBar1.Max := 100;
Show;
Update;
Application.CreateForm(TForm1, Form1);
progressBar1.StepBy(25);
sleep(200);
Application.CreateForm(TForm2, Form2);
progressBar1.StepBy(25);
sleep(200);
Application.CreateForm(TForm3, Form3);
progressBar1.StepBy(25);
sleep(200);
Application.CreateForm(TForm4, Form4);
progressBar1.StepBy(25);
sleep(200);
finally
free;
end;
Application.Run;
end.

Приложение:

Ответ отправил: Злоумышленник (статус: 2-ой класс)
Отправлен: 24.01.2006, 19:44
Оценка за ответ: 5
Комментарий оценки:
Спасибо!

Отвечает: Меркулов Алексей
Здравствуйте, ERA! Если вы имеете ввиду сплаш-скрин, то см приложение

Приложение:

Ответ отправил: Меркулов Алексей (статус: 4-ый класс)
Отправлен: 24.01.2006, 22:34
Оценка за ответ: 5
Комментарий оценки:
Спасибо!


Вопрос № 33.989
Решил освоить дельфу. Решил написать для своей локальной сети, свою программу для чата. Возникло несколько вопросов. Какой протокол лучше всего использовать. Надо чтобы без отдельного сервера работала.
И как сделать чтобы например как аська. Если ты сидел под одним рабочим сталом и потом другой человек сел за комп и переключился на свой рабочий стоит. В старом программа незакрываласьи продалжала работать, а в новом она еще раз открывалась.
Если можно еще ссылочки почитать доку по этому. Как вообще примерно организовать все это.
Отправлен: 24.01.2006, 18:10
Вопрос задал: Kostya (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Злоумышленник
Здравствуйте, Kostya! Могу посоветовать книжку скачать, М. Флёнов "Программирование в Delphi глазами хакера", там статья 4.6. Чат для локальной сети, стр. 162
Ответ отправил: Злоумышленник (статус: 2-ой класс)
Отправлен: 24.01.2006, 20:00
Оценка за ответ: 4

Отвечает: Лучников Юрий Владимирович
Здравствуйте, Kostya!
Чаще всего используют протокол TCP/IP. С выделенным сервером ваш продукт будет работать или без него - как вы сами реализуете... Всеравно в этой иерархии будет так называемый сервер (принимающий запросы) и клиент (инициирующий запросы). Причем Одна и та же машина одновременно может быть и тем и другим.

Насчет разделения настроек согласно учетным записям:
В реестре есть ветка для конкретной учетной записи. Просто пишете настройки и параметры автозапуска в нее и проблема будет решена.

Ссылка хорошей литературы: ponteley.al.ru
Много интересных статей можно найти по адресу rsdn.ru

Успехов!
Ответ отправил: Лучников Юрий Владимирович (статус: Студент)
Отправлен: 25.01.2006, 01:53
Оценка за ответ: 5


Вопрос № 33.998
Как сделать приложение, которое всегда имело бы XP-подобный стиль элементов управления и самой формы, даже при выполнении в Win98, например. Я видел такие проги, так завидно...
Отправлен: 24.01.2006, 19:44
Вопрос задал: Злоумышленник (статус: 2-ой класс)
Всего ответов: 7
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Dushin Igor
Здравствуйте, One!
Для этого надо юзать дополнительные компоненты, посмотрите эти, может понравится;)
http://www.freeware32.ru/program.php?id=85
http://soft.mail.ru/program_page.php?grp=14394
или ищи какие-нибудь другие:)
---------
Глюк без причины - признак вирусины!
Ответ отправил: Dushin Igor (статус: 3-ий класс)
Отправлен: 24.01.2006, 20:40
Оценка за ответ: 5

Отвечает: Меркулов Алексей
Здравствуйте, One! Используй компоненты типа SkinForm и т.д.

Ответ отправил: Меркулов Алексей (статус: 4-ый класс)
Отправлен: 24.01.2006, 22:44
Оценка за ответ: 5

Отвечает: REFERI
Здравствуйте, One!
Для этого нужно использовать компоненты интервейса не зависящие от манифеста XP - например PDJXPPack или xpctrls - таких компонентов в интернете достаточно - всякие батоны, контролы и прочее - ссылок на эти компоненты я не храню, потому что найти их не сложно. (если конечно руки есть и голова) :)
Удачи!
---------
Не судите, да не судимы будете...
Ответ отправил: REFERI (статус: Студент)
Отправлен: 24.01.2006, 23:10
Оценка за ответ: 5

Отвечает: Лучников Юрий Владимирович
Здравствуйте, One!
Для этого используют технологию скинов или сторонние компоненты...
Попробуйте поискать подобное на torry.net

Успехов!
Ответ отправил: Лучников Юрий Владимирович (статус: Студент)
Отправлен: 25.01.2006, 01:56
Оценка за ответ: 5

Отвечает: Diman_A
Здравствуйте, One!
Я использую Suipack - отличный пакет компонентов для работы со скинами. Не помню, откуда из брал, давно это было, но можешь поискать на torry.net или их сайте http://www.sunisoft.com/
Ответ отправил: Diman_A (статус: 4-ый класс)
Отправлен: 25.01.2006, 05:45
Оценка за ответ: 5

Отвечает: Schmak
Здравствуйте, One!
Можно использовать сторонние компоненты. А в приципе если вы умеете хрошо рисовать, то можно нарисовать кнопки, полосы прокруткиб фон формы и т.п. например, в Corel Draw, а затем прорисовывать их на форме.
---------
Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Практикант)
Отправлен: 25.01.2006, 07:38
Оценка за ответ: 3
Комментарий оценки:
Срочно начинаю учиться рисовать кнопки, полосы прокруткиб фон формы и т.п. например, в Corel Draw.

Отвечает: D.M.
Здравствуйте, One!

Данный пакет предназначен для Delphi 5.
Все нижеописанные компоненты выглядят как в
Windows XP на любых версиях Windows.

Ниже ссылка,где есть описание и ссылка на скачку....Сам пользуюсь.....

Приложение:

---------
Зёзики руллллят :)

Ответ отправил: D.M. (статус: 2-ой класс)
Отправлен: 25.01.2006, 10:58
Оценка за ответ: 5
Комментарий оценки:
А тебе ОСОБОЕ ОГРОМНОЕ СПАСИБО


Вопрос № 34.002
Здравствуйте уважаемые эксперты.

Есть некий массив PRD[i, j] содержащий "1" и "0" например:

Y
A
|00000000000000000000000000000
|00000011111111111110000011110
|00011111111111111111111111000
|00000001111111111111110000000
|00000000000110000111111110000
|00000000000000000001111111000
|00000000011111111111111110000
|00000000000111111111000000000
|00000000000001111000000000000
|00000000000000000000000000000
------------------------------->X

Впрос: Нужно найти массив координат границы области заданной "1",
причем чтобы эти координаты были последовательными, в конечном итоге нужно обрисовать эту область
ф-ей Polygon или Polyline, т.е. если координаты не будут упорядочены то изображение области получается
многкратно перечеркнуто.

Помогите люди добрые.
Отправлен: 24.01.2006, 20:15
Вопрос задал: Юрий Смирнов (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Schmak
Здравствуйте, Юрий Смирнов!
В приложении я привожу приложение. Из input.txt в массив A считываются необходимые данные. В массив и выводится оболочка области. Я думаю нет необходимости упорядочивать координаты точек. Достаточно пробежаться по массиву b один раз (за n квадрат) и если соответствующий элемент массива равен 8 (число можно конечно же поменять), то окрасить точку в необходимый цвет (напрмер в чёрный: Canvas.Pixels[i,j]:=clblack). Это будет легче, чем искать координаты в порядке их следования в оболочке.
Если всё таки необходимо строить Polyline то можете поискать в поисковиках алгоритм построения выпуклой оболочки.

Приложение:

---------
Не всё то Windows, что висит!

Ответ отправил: Schmak (статус: Практикант)
Отправлен: 25.01.2006, 07:41
Оценка за ответ: 4
Комментарий оценки:
Большое спасибо за ответ, но к сажелению он мне не подходит.

Дело в том, что сама задача много сложнее чем очертить область заданную "1". И этот многоугольник в большинстве случаев не выпуклый. Можно конечно разбить его на выпуклые многоугольники, и отсортировать вершин по углу. Но затем возникает задача склейки, то же не совсем тривиальная.


Вопрос № 34.006
Здравстуйте уважеамые эксперты. Интересует такой вопрос. Можно ли средствами Delphi заблокировать по сети мышку и клавиатуру пользователя или заблокировать компьютер, наподобие программы WinLock? Задумка такая, пользователь полез куда не нужно, блокирую комп. и вешаю перед носом табличку с предупреждением. Если можно приведите хоть какой нибудь код на эту тему. Заранее благодарен!
Отправлен: 24.01.2006, 20:23
Вопрос задал: Кузнецов С.Н. (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Slava
Здравствуйте, Кузнецов С.Н.!
На счет сети не скажу но вот процедура для блокировки мышки и клавиатуры:

procedure LockPC;
var OldValue: LongBool;
begin
SystemParametersInfo(97, Word(Bool), @OldValue, 0);
WinExec(PChar('rundll32 mouse,disable'), SW_SHOW);
WinExec(PChar('rundll32 keyboard,disable'), SW_SHOW);
end

Ответ отправил: Slava (статус: 8-ой класс)
Отправлен: 24.01.2006, 21:43
Оценка за ответ: 5
Комментарий оценки:
Спасибо, остальное может быть сам додумаю.

Отвечает: Лучников Юрий Владимирович
Здравствуйте, Кузнецов С.Н.!
Для этого нужно написать сервер, который постоянно будт висеть на компьютере пользователя и прослушивать определенный порт для внешних соединений и клиента, с помощью которого вы будете подключаться к нужному компьютеру и отдавать команды серверу заблокировать, выдать предупреждение и т.д.

Соответственно сервер должен содержать в своем арсенале нужные функции.

Успехов!
Ответ отправил: Лучников Юрий Владимирович (статус: Студент)
Отправлен: 25.01.2006, 02:00
Оценка за ответ: 3
Комментарий оценки:
Это и так понятно! Вопрос был о блокировке клав. и мыши или самого компьютера. А также о возможном коде.


Вопрос № 34.014
Здравствуйте уважаемые эксперты. Нужна помощь в следующем:
есть база данных нужно чтобы при нажатии на кнопку для каждой записи создавалась своя форма
Отправлен: 24.01.2006, 22:17
Вопрос задал: Меркулов Алексей (статус: 4-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Архангельский Андрей Германович
Здравствуйте, Меркулов Алексей!

А зачем? Если у тебя 10 млн. записей, то ты будешь создавать 10 млн. форм?

На самом деле тебе нужно построить DataSet с необходимым запросом, и на форму посадить поля типа DB_Edit. Я использую компоненты IBObjects - в этом случае это IB_Edit, IB_Memo и т.п.

В результате при переходе от записи к записи у тебя будут показываться и редактироваться поля соответствующей записи
Ответ отправил: Архангельский Андрей Германович (статус: Студент)
Отправлен: 24.01.2006, 22:42

Отвечает: Bochvarov NikB
Здравствуйте, Меркулов Алексей!
Делаеш 3 процедури:
1. Собитие "нажатие на кнопку"
2. Ходит по всех записах таблицьи
3. Для один запис делает форму.
И все!
Ответ отправил: Bochvarov NikB (статус: 5-ый класс)
Отправлен: 24.01.2006, 22:45
Оценка за ответ: 3

Отвечает: nimoid
Здравствуйте, Меркулов Алексей!
А может тебе подойдет MDI? Открыть там будет можно много форм - для каждой записи...
---------
Пишем баги на любые патчи :-]
Ответ отправил: nimoid (статус: 7-ой класс)
Отправлен: 25.01.2006, 03:20
Оценка за ответ: 3


Вопрос № 34.015
Здравствуйте увважаемые эксперты. Нужна помощь в следующем:
есть база данных нужно чтобы при клике по некой кнопке для текущей
записи должна создаваться отдельная форма с возможностью редактирования. Заранее спасибо.
Отправлен: 24.01.2006, 22:22
Вопрос задал: Меркулов Алексей (статус: 4-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лучников Юрий Владимирович
Здравствуйте, Меркулов Алексей!
Создаете в проекте дополнительную форму, кидаете на нее Edit компоненты, кнопочки типа Сохранить, Отмена...

При вызове формы извлекаете выбранную запись и передаете данные этой записи в форму + ID нужной записи (чтобы знать какую из них перезаписать).
Будет выглядеть примерно так:
Form2.Edit1.Text := CurrRec.Name;
Form2.Edit2.Text := CurrRec.Age; и т.д.

Успехов!
Ответ отправил: Лучников Юрий Владимирович (статус: Студент)
Отправлен: 25.01.2006, 02:08
Оценка за ответ: 4

Отвечает: LanK
Здравствуйте, Меркулов Алексей!

Не совсем понятен вопрос... попробуем его "разложить":
----Имеем:
1. Из Ваших слов допускаем, что собственно доступ к базе у Вас уже организован.
2. Допустим через компоненты TQuery (Q) и TDataset + DBEdit на Form1
----Решаем:
3. Создаем по нажатию кнопки форму Form2.Show (если она у Вас создается автоматически). И к нашему Query посылаем команду Q.Edit
4. У нее (Form2) должен быть в uses Form1
5. Тогда у F2 можно разместить компоненты DBEdit, которые "привязаны" к TDataset'у F1, но в отличии от F1 они разрешают менять содержимое.
6. Собственно пользователь меняет и нажимает сохранить, мы посылаем F1.Q.Post

Собственно можно даже кнопку сохранить в таком варианте не делать :) а на закрытие формы повесить F1.Q.Post, только тогда в п.3 поставьте Form2.ShowModal чтобы пользователь обязательно закончил работу с этой записью.
---------
Пусть все будет хорошо! Давайте жить дружно! :) И будет жить еще лучше!
Ответ отправил: LanK (статус: 4-ый класс)
Отправлен: 25.01.2006, 09:28
Оценка за ответ: 4


Вопрос № 34.024
уважаемые эксперты подскажите , на делфи 7 с помощью wmi собираю данные о железе компьютера и записываю их в striggrid , каким образом их можно передать в БД под управлением sql 2000 ????(сейчас там тестовая БД,пока она не нормализована, из нее получаю данные с помощью ADO), добавить данные в DBGrid (также как в striggrid)как я понял не получитися т.к. этот компонент орентирован только на получениие информации из БД с которой он связан через строку подключения. как выйти из этого положения???
Отправлен: 25.01.2006, 00:41
Вопрос задал: Asani (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Jadd
Здравствуйте, Asani!
Очень просто. Нужно писать сразу в БД, а DBGrid отобразит записаное. Если не хочешь так, тогда можно сначала грузануть в какой-нить массив, а потом кинуть и в БД, и в сетку(Grid), но тогда ты должен будешь заморачиваться насчет обновления содержимого сетки. ИМХО, проще первый вариант.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 25.01.2006, 09:26


Вопрос № 34.028
Здравствуйте, Уважаемые эксперты!
У меня к вам 2 вопроса:
1. Как при нажатии на кнопку в програме, написанной на Delphi запустить аплет панели управления TimeDate.cpl
(использование WinExec не предлагать) .
2. Как программно сменить системное время Windows XP из программы, написанной на Delphi.
Отправлен: 25.01.2006, 02:14
Вопрос задал: Solovej (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лучников Юрий Владимирович
Здравствуйте, Solovej!
1. В таком случае можно воспользоваться API-функцией CreateProcess. Описание данной функции вы можете найти в MSDN...
2. Воспользуйтесь API-функцией SetSystemTime()

Описание функции (выдержки из MSDN) в приложении...

Успехов!!!

Приложение:

Ответ отправил: Лучников Юрий Владимирович (статус: Студент)
Отправлен: 25.01.2006, 02:55
Оценка за ответ: 4
Комментарий оценки:
Жаль, что в приложении не пример использования функции, а выдержка из MSDN.

Отвечает: Diman_A
Здравствуйте, Solovej!
Функция Settime устанавливает системную дату и время.
Дата и время задаются в формате Tdatetime так: целая часть числа - число дней, которое прошло с 30.12.1899. Например:
35065 - 1 января 1996 г.
38718 - 1 января 2006 г.
Дробной частью числа задается часть суток, которая прошла. Например:
38718.5 - 12 часов дня 1 января 2006 г.
Саму функцию и пример использования смотри в приложении.

Приложение:

Ответ отправил: Diman_A (статус: 4-ый класс)
Отправлен: 25.01.2006, 05:41
Оценка за ответ: 5
Комментарий оценки:
Не совсем так как мне надо, но все равно спасибо за ответ.


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

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

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

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

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


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


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

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Архив рассылки
Отписаться Вебом Почтой
Вспомнить пароль

В избранное