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

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


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

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

Выпуск № 439
от 10.04.2006, 08:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 299, Экспертов: 68
В номере:Вопросов: 10, Ответов: 24


Вопрос № 39331: Здраствуй народ. Приспичило в Delphi на WinAPI написать кусок программы создания формы. Облазил, кажется, везде, но полного ответа не нашел. Есть много примеров как создать простую форму. Но меня интересует как настроить своства формы: запрет изменен...
Вопрос № 39337: Здрасте. Не знаю, уместно ли здесь задать вопрос по созданию Corba приложений, но если что, вы меня поправите. Есть трехзвенная система с исп. Corba. Простейшая работу с данными уже организована(показать, отредактировать, ApplyUpdates). C по...
Вопрос № 39347: Доброго времени суток, Уважаемые эксперты. Создал БД в Access (не очень большую - 120 записей в 16 полях. С формами, запросами и отчётами). А теперь сам вопрос. Можно ли в Delphi 7 создать приложение, с помощью которого, будет осуществляться дост...
Вопрос № 39350: Как проиграть один и тотже wav-файл с помощью TMediaPlayer? Поясню. Допустим, есть два TmediaPlayer и в каждом установлено одно и тоже имя файла. Если запустить первый - играется, запустить второй - ошибка. Как решить? P. S. MediaPlayer - пот...
Вопрос № 39360: Уважаемфе Эксперты! У меня к Вам вопрос, можно ли создать шаблон MS Word (*.dot) с помощью Дельфи как написанный на VBA (VisualBasic) заранее спасибо...
Вопрос № 39367: Добрый день ! Вопрос я знаю что в Delphi 7 есть такая комманда Readin ! Ну так в учебнике написанно ! У меня Delphi 2005 ! Но когда я ввожу Readin он выдаёт что комманда неопознана ! Есть ли её замена ??? С ней очень удобно ра...
Вопрос № 39372: Здраствуйте! Вопрос такой: у меня два типизированных файла. Как в StringGrid можно листать содержимое второго файла. Например, первый файл содержит код и наименование чего-либо. При пролистывание первого файла, в StringGrid должно показываться только...
Вопрос № 39375: Здраствуйте уважаемые эксперты! Скачал с инета кучу всяких кнопок ,скинов и всего разного.И тут возник вопрос: Как это все использовать в самом Делфи? Пробавал как там написано,не получается. Раскажите пожалуйсто,желате...
Вопрос № 39383: Добрый вечер ! Вопрос я сегодня задал но поскольку в учебнике опечатка задал неправильно ! Вот ешё вопрос : Как можно заблокировать рабочий стол в windows XP ! Даже несовсем заблокировать ! А при перезагрузке выводица InputQuery котор...
Вопрос № 39399: Нужно сделать следующее. Как сделать кнопку нажатой? T.e. её надо нажать - она остается нажатой. Потом надо ещё раз нажать - теперь она отжатая. И чтобы в свойствах этой кнопки было показано типа: нажата - True, отжата - False.<br...

Вопрос № 39.331
Здраствуй народ. Приспичило в Delphi на WinAPI написать кусок программы создания формы. Облазил, кажется, везде, но полного ответа не нашел. Есть много примеров как создать простую форму. Но меня интересует как настроить своства формы: запрет изменения размеров, запрет системного меню, удаление системных кнопок, модальность и другие свойства формы... Наверное я что то упустил, поэтому может кто знает где об этом можно почитать?
Отправлен: 04.04.2006, 08:44
Вопрос задал: Карасев Алексей Александрович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Cheater76
Здравствуйте, Карасев Алексей Александрович!
Kuliba и KD (сборником от Королевства Дельфи, каждый год его выкладывают)
Например:
Предотвращение изменения размеров формы
Взято из статей Borland tech info

2958: Предотвращение изменения размеров формы

В некоторых случаях разработчики могут захотеть создать в Delphi форму, содержащую некоторые характеристики диалогового окна. Например, они не хотят позволить конечным пользователям изменять размеры формы в режиме выполнения программы также, как это может программист во вромя разработки. В Delphi не существует свойств или методов для создания формы с такими характеристиками. Но из-за наличия разработанного программного слоя между Delphi и API, программисты могут справиться с этой задачей довольно легко.

Следующий пример демонстрирует способ обработки системного сообщения "WM_GetMinMaxInfo", которое позволяет разработчикам ограничивать в режиме выполнения программы размер окна (формы) определенным значением. В этом случае сообщение будет использоваться, чтобы функционально запретить возможность изменения размера окна.

Используйте следующий модуль:

--------------------------------------------------------------------------------
unit getminmax;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs;

type

TForm1 = class(TForm)
private
{ Private declarations }
procedure WMGetMinMaxInfo(var Msg: TWMGetMinMaxInfo);
message WM_GETMINMAXINFO;
procedure WMInitMenuPopup(var Msg: TWMInitMenuPopup);
message WM_INITMENUPOPUP;
procedure WMNCHitTest(var Msg: TWMNCHitTest);
message WM_NCHitTest;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}
procedure TForm1.WMGetMinMaxInfo(var Msg: TWMGetMinMaxInfo);
begin
inherited;
with Msg.MinMaxInfo^ do
begin
ptMinTrackSize.x:= form1.width;
ptMaxTrackSize.x:= form1.width;
ptMinTrackSize.y:= form1.height;
ptMaxTrackSize.y:= form1.height;
end;
end;
procedure TForm1.WMInitMenuPopup(var Msg: TWMInitMenuPopup);
begin
inherited;
if Msg.SystemMenu then
EnableMenuItem(Msg.MenuPopup, SC_SIZE, MF_BYCOMMAND or MF_GRAYED)
end;
procedure TForm1.WMNCHitTest(var Msg: TWMNCHitTest);
begin
inherited;
with Msg do
if Result in [HTLEFT, HTRIGHT, HTBOTTOM, HTBOTTOMRIGHT,
HTBOTTOMLEFT, HTTOP, HTTOPRIGHT, HTTOPLEFT] then
Result:= HTNOWHERE
end;
end. { Конец модуля}

Обработчик системного сообщения "WM_GetMinMaxInfo" в вышеприведенном коде использовался для установления минимального и максимального значения окна TrackSize, где этому значению были присвоены величины, задаваемые в период проектирования формы. На самом деле этого достаточно, чтобы форма не меняла размеров, но мы для примера добавили обработку еще двух сообщений, чтобы ваше приложение выглядело профессионально. Первым сообщением, обрабатываемым нами, было сообщение "WMInitMenuPopup", оно позволяло сделать недоступным пункт системного меню, касающегося возможности изменения размеров окна. Вторым сообщением было "WMNCHitTest", которое служило тем же целям - не создавать впечатления возможности изменения размера, а именно: запрет изменения вида курсора в момент нахождения его на границах окна.

Дополнение

По-моему, более целесообразно переписать само свойство окна, чем обработчик события WMNCHitTest- заодно и системное меню переписывается:

--------------------------------------------------------------------------------
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style:=Params.Style xor WS_SIZEBOX xor WS_MAXIMIZEBOX;
end;
Ответ отправил: Cheater76 (статус: 3-ий класс)
Ответ отправлен: 04.04.2006, 10:14

Отвечает: AnD1
Здравствуйте, Карасев Алексей Александрович!
Win32 Programmer's Reference => Windows. Подробней не куда, но на английском, еще можно MSDN покопать, но это слишком :))
Ответ отправил: AnD1 (статус: 3-ий класс)
Ответ отправлен: 04.04.2006, 13:54

Отвечает: Артём Шегеда
Здравствуйте, Карасев Алексей Александрович!

Пример в приложении создаёт форму с однострочным EDIT (TEdit) и многострочным EDIT (TMemo). Подробнее о создании окон средствами Win32 API - в справке MSDN(http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/createwindow.asp) и в рассылке по Win32 API

Приложение:

Ответ отправил: Артём Шегеда (статус: 5-ый класс)
Ответ отправлен: 04.04.2006, 14:09


Вопрос № 39.337
Здрасте. Не знаю, уместно ли здесь задать вопрос по созданию Corba приложений, но если что, вы меня поправите.
Есть трехзвенная система с исп. Corba.
Простейшая работу с данными уже организована(показать, отредактировать, ApplyUpdates). C помощью каких средств(компонент, методов и т.д.) можно определить, с какого компьютера (IP и/или т.д. ) вызваны методы сервера. Необходимо для журналирования работы сервера(кто, что когда сделал) .
СУБД: Firebird
сервер приложений: Form1(IBDatabase1), Corba Data Module (IBTransaction1, IBQuery1, DataSetProvider1)
клиент: Form1(ClientDataSet1, DataSource1, DBGrid1)
Если нужны доп. сведения - скажите.
За пример брал статью http://www.megalib.com/books/7/MiltiTierDevelopmentMIDAS.htm
Отправлен: 04.04.2006, 10:16
Вопрос задал: Marcel (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 6)

Отвечает: sir henry
Здравствуйте, Marcel!
Не думаю, что это относится к Корбе, но обычно в базе данных заводят журнал действий пользователей. Ведь пользователи в обязательном порядке регистрируются в БД, прежде чем начать работу. Поэтому Вы просто составляете список тех действий, которые должны быть в обязательном порядке зарегестрированы и с пмощью компонента TIBEvents пробуете что-нибудь сделать. Этот компонент позволяет получать события, связаные с БД в приложении.
Журналирование можно реализовать и внутри БД, с помощью встроеных процедур-триггеров, которые выполняются при вставке, удалении, изменении записи.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 04.04.2006, 10:40
Оценка за ответ: 2
Комментарий оценки:
Спасибо, но нет, не годится. Придется заводить (в моем случае) 2 десятка пользователей БД, права и т.д. Я так рассуждаю, что если клиент вызвал создание объекта на стороне сервера, то на сервере в этом объекте должна быть инфа, кто и откуда его создал. Вот эту инфу и хотелось бы выцарапать.


Вопрос № 39.347
Доброго времени суток, Уважаемые эксперты.
Создал БД в Access (не очень большую - 120 записей в 16 полях. С формами, запросами и отчётами). А теперь сам вопрос. Можно ли в Delphi 7 создать приложение, с помощью которого, будет осуществляться доступ и работа с этой БД (локально). Но есть одно но. Компьютер, на котором предпологается запускать это приложение, не имеет ни Access, ни Delphi. Может-быть все необходимые компоненты (в т.ч. и БД) можно будет из инсталятора установить. Вообще, реально ли всё это? А если да, буду рад любому практическому совету.
Заранее Вас благодарю, Алексей.
Отправлен: 04.04.2006, 11:08
Вопрос задал: Фёдоров Алексей Владимирович (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 8)

Отвечает: sir henry
Здравствуйте, Фёдоров Алексей Владимирович!
Для начала Вам нужно определится, через какой компонент доступа Вы будете с этой базой данных работать.
- через БДЕ - придется дополнительно его и устанавливать, это выкачивать с инета 9,5 МБ, либо нести диск с Дельфи и с него устанавливать одну БДЕ.
- через ADO - придется скачивать MDAC с сервера Microsoft, около 5,5 МБ. Однако если на том компьютере уже стоит MS Office, то скорее всего драйвер ADO для Access уже стоит. Посмотреть можно так: создать файл с расширением .udl (название не важно), открыть его щелкнув два раза, и на вкладке "Поставщик данных" посмотреть, присутствует ли в списке "Microsoft Jet 4.0 OLE DB Provider". Не знаю, что у Вас на диске с Дельфи, но на моем диске MDAC есть.
- Можно порыть в интернете какой-либо компонент для прямого доступа к БД Access, но его все равно придется устанавливать, только уже к Вам, в Дельфи.
Наименее затратное решение - работать через ADO.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 04.04.2006, 12:02
Оценка за ответ: 4
Комментарий оценки:
Очень полезная инфа для размышления.
Я конечно не такой пока ещё специалист в Delphi, но чувствую разобраться можно.

Отвечает: Проходящий Мимо
Здравствуйте, Фёдоров Алексей Владимирович!
Присутствия на машине пользователя Delphi и Access вовсе не обязательно. Достаточно иметь набор инсталированых ODBC-драйверов в системе, например ODBCJT32.dll. Доступ осуществляется при помощи компонент, расположеных на закладке палитры ADO: TADOConnection, ТADOQuery и/или TADOTable. Использование того или иного драйвера опредиляется строкой подключения ADOConnection1.ConnectionString. Вообще можна сделать программу универсальней, если хранить строку подключений ADOConnection1.ConnectionString, скажем, во внешнем ini-файле. Тогда данные можна брать откуда угодно, хоть с MS SQL до .dbf включительно.

Приложение:

---------
Carpe diem!

Ответ отправил: Проходящий Мимо (статус: 1-ый класс)
Ответ отправлен: 04.04.2006, 12:15
Оценка за ответ: 4
Комментарий оценки:
Эх, жалко! Чувствую инфа грамотная и полезная, но уровнем до неё пока не дотягиваю (нужно ещё матчасть поучить).

Отвечает: AnD1
Здравствуйте, Фёдоров Алексей Владимирович!
Да, конечно можно. Необходимо использовать технологию ADO. В нете есть куча инфы про программирование ADO, так же есть хорошие примеры в книгах М.Фленова ("Библия Delphi" - можно скачать в сети, Delphi 2005), Фараоннова (Программирование БД на Delphi или что-то подобное). Если нужено, могу выслать пример использования ADO (4nd1@mail.ru) А на счет работы проги без Delphi и Access'a, то проверно лично на "голой" WinXP - все отлично работает, на счет др. ОС - незнаю, в крайнем случае там нужно будет таскать за собой всего лишь одну dll-ку.
Ответ отправил: AnD1 (статус: 3-ий класс)
Ответ отправлен: 04.04.2006, 13:48
Оценка за ответ: 4
Комментарий оценки:
Дельно, конкретно! Спасибо! Теперь хоть буду знать, что читать, а то у меня есть "Иллюстрированный самоучитель по Delphi 7 для начинаюших"? но там сами понимаете...

Отвечает: Злоумышленник
Здравствуйте, Фёдоров Алексей Владимирович!
В дополнение к предыдущим ответам. Я постоянно использую в Delphi именно Access-формат таблиц через ADO (поставщик OLE DB - Microsoft Jet4.0 OLE DB Provider). Проги великолепно работают в Win98/Me/2k/XP, на машинах, на которых Office'а нет и не было. Причём в Win98 работал формат Access2000. Я где-то читал, что в современных OS от M$ драйвер для доступа к *.mdb'шникам, который тебе нужен, уже встроен.
Ответ отправил: Злоумышленник (статус: 5-ый класс)
Ответ отправлен: 04.04.2006, 15:53


Вопрос № 39.350
Как проиграть один и тотже wav-файл с помощью TMediaPlayer?
Поясню. Допустим, есть два TmediaPlayer и в каждом установлено одно и тоже имя файла. Если запустить первый - играется, запустить второй - ошибка. Как решить?
P. S. MediaPlayer - потому, что нужно отслеживать момент окончания проигрывания, поэтому playSound не предлагать. И, делать копию исходного файла - тоже.
Спасибо
Отправлен: 04.04.2006, 12:06
Вопрос задал: mvp (статус: 10-ый класс)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 7)

Отвечает: AnD1
Здравствуйте, mvp!
Я Вас огорчу, но предложенным спосбом никак :(. Это проблема в самой windows => TMediaPlayer'om этого не добьешься (он завязан на виндовых lib'ах), поэтому нужно либо использовать сторонние компоненты(см на torry.net ) или придумавать др. способы
Ответ отправил: AnD1 (статус: 3-ий класс)
Ответ отправлен: 04.04.2006, 14:04
Оценка за ответ: 3

Отвечает: Артём Шегеда
Здравствуйте, mvp!

Боюсь, что мой ответ может не понравится (просто я не знаю, какие ещё возможности используемого TMediaPlayer'а ещё потребуются), но по исходным данным лучшим решенеим стенет отказ от использования этой компоненты и переход на TWavSound (http://www.torry.net/vcl/mmedia/audio/wavsound.zip)/
Вообще, многие стандартные компоненты из поставки BorlandDelphi не соответствуют требованиям программиста или обладают излишней избыточностью. Поэтому рекомендую ещё посетить и эту страничку: http://www.torry.net/pages.php?id=167 - наверняка найдётся что-то интересное...
Ответ отправил: Артём Шегеда (статус: 5-ый класс)
Ответ отправлен: 04.04.2006, 14:38
Оценка за ответ: 4

Отвечает: Delphin
Здравствуйте, mvp!
Что за ошибка? Только что проверил у себя с TMediaPlayer и все ок.
Слушай, помоему PlaySound как-то можно отследить конец...
---------
Обращаться в ICQ: 66550088 (Ally) или E-Mail: AvePassion@GMail.Com
Ответ отправил: Delphin (статус: Студент)
Ответ отправлен: 04.04.2006, 15:44

Отвечает: Ерёмин Андрей
Здравствуйте, mvp!
Никаких премудростей не нужно. Обрабатываем событие OnNotify у TMediaPlayer:

procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
if MediaPlayer1.NotifyValue = nvSuccessful then
begin
{ Воспроизведение закончилось }
end;
end;


---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 04.04.2006, 17:54
Оценка за ответ: 4

Отвечает: Mrdimon
Здравствуйте, mvp!
Можно предложить отслеживать запуск второй копии программы :)
Ответ отправил: Mrdimon (статус: 1-ый класс)
Ответ отправлен: 08.04.2006, 12:05


Вопрос № 39.360
Уважаемфе Эксперты!
У меня к Вам вопрос, можно ли создать шаблон MS Word (*.dot) с помощью Дельфи как написанный на VBA (VisualBasic)
заранее спасибо
Отправлен: 04.04.2006, 15:03
Вопрос задал: ERA (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Проходящий Мимо
Здравствуйте, ERA!
Не знаю, что имелось ввиду под "как написанный на VBA", но в качестве шаблонов я использовал обыкновенный файл .doc, коим в принципе шаблон и является, который потом "сохранял как..." в нужном месте ы под нужный именем
Пример:

procedure SendRecToWord(PathShablon: string);
var
Shablon: OleVariant;
newName: string;
begin
Shablon := PathShablon;
if not FileExists(Shablon) then
exit;
NewName := 'c: ew.doc';
try
WordApplication1.Connect;
if GetVersionWord(WordApplication1) < 9 then
begin
MessageDlg('Нужен MS Word 2000/XP или выше', mtError, [mbOk], 0);
exit;
end;
except
MessageDlg('Word не установлен!', mtError, [mbOk], 0);
WordApplication1.Disconnect;
exit;
end;

try
//отключить проверку орфографии
WordApplication1.Options.CheckSpellingAsYouType := false;
WordApplication1.Options.CheckGrammarAsYouType := false;
WordApplication1.Visible := True;
WordApplication1.Caption := 'My document';

//Открыть шаблон документа
WordApplication1.Documents.Open(Shablon, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam);

//Связать компонент з существующим интерфейсом
WordDocument1.ConnectKind := ckAttachToInterface;
WordDocument1.ConnectTo(WordApplication1.ActiveDocument);

{здесь что-то делаем}

WordDocument1.SaveAs(NewName);

finally
WordApplication1.Disconnect;
end;
end;
---------
Carpe diem!
Ответ отправил: Проходящий Мимо (статус: 1-ый класс)
Ответ отправлен: 04.04.2006, 15:37


Вопрос № 39.367
Добрый день !
Вопрос я знаю что в Delphi 7 есть такая комманда Readin !
Ну так в учебнике написанно !
У меня Delphi 2005 !
Но когда я ввожу Readin он выдаёт что комманда неопознана !
Есть ли её замена ???
С ней очень удобно различные строки читать из файла !
read и readln не предлогать уже пробовали !
С уважением,
Zmeu .
Отправлен: 04.04.2006, 16:11
Вопрос задал: Tamashev Denis M (статус: 2-ой класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Ataman N. N.
Здравствуйте, Tamashev Denis M!
Первый раз слышу о такой команде.В каком учебнике Вы ее вычитали? Возможно там была опечатка?
Ответ отправил: Ataman N. N. (статус: 10-ый класс)
Ответ отправлен: 04.04.2006, 16:17
Оценка за ответ: 5
Комментарий оценки:
Да в учебнике опечатка !
Sorry !

Отвечает: Проходящий Мимо
Здравствуйте, Tamashev Denis M!
Есть комманда ReadInt! Если не работает readln, сделай ссылку на модуль, где реализована функция System.Readln. Возможно, ты имееш ввиду метод какого-то объекта? Если нужно прочитать строки из файла, воспользуйся объектом TStringList. В нем есть необходимые методи чтения и записи в файл LoadFromFile и SaveToFile.
---------
Carpe diem!
Ответ отправил: Проходящий Мимо (статус: 1-ый класс)
Ответ отправлен: 04.04.2006, 16:32
Оценка за ответ: 5
Комментарий оценки:
в учебнике опечатка !
Sorry !

Отвечает: AnD1
Здравствуйте, Tamashev Denis M!
Скорее всего в учебнике была опечатка, команды Readin - нет и не было (и, возможно, никогда не будет ;) ). Если что-то близкое - то это ReadLn. Или вы что-то путаете.
Ответ отправил: AnD1 (статус: 3-ий класс)
Ответ отправлен: 04.04.2006, 17:14
Оценка за ответ: 5
Комментарий оценки:
в учебнике опечатка !
Sorry !
А кстати если кто хочет посмотреть на этот учебник то вот он : Учебник по Delphi 7 для начинающих

С сайта www.PowerBuilder.sbn.bz


Вопрос № 39.372
Здраствуйте! Вопрос такой: у меня два типизированных файла. Как в StringGrid можно листать содержимое второго файла. Например, первый файл содержит код и наименование чего-либо. При пролистывание первого файла, в StringGrid должно показываться только то, что содержит каждый код в первом файле по отдельности.
Отправлен: 04.04.2006, 16:58
Вопрос задал: BeTepoK_20 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Артём Шегеда
Здравствуйте, BeTepoK_20!

В приложении - Unit1.dfm и Unit1.pas
Надеюсь, файлы GroupData.dat и ItemData.dat уже существуют

Приложение:

Ответ отправил: Артём Шегеда (статус: 5-ый класс)
Ответ отправлен: 04.04.2006, 19:13


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

Скачал с инета кучу всяких кнопок ,скинов и всего разного.И тут возник вопрос:
Как это все использовать в самом Делфи?

Пробавал как там написано,не получается.

Раскажите пожалуйсто,желателно на примере.

Зарание спасибо!

P.S. и как оценки ставить,что обидно не было?
Отправлен: 04.04.2006, 17:39
Вопрос задал: Lamer_Brother (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Артём Шегеда
Здравствуйте, Lamer_Brother!

Звонит пациент доктору: "Доктор, я что-то съел и теперь у меня живот болит :(" На что ему доктор: "А вы анальгинчику глотните - болеть перестанет". Через сутки пациент оказался в реанимации с прободной язвой :((((
Попробуем лечить по сценарию этого анекдота :))
Скажем так... Компонент, скинов, и прочей мишуры для Delphi - как грязи... Что имеено ты скачал - неизвестно. Лично я пользуюсь BSF (Almediadev Visual Component Library BusinessSkinForm) - более-менее пристойный скиновый набор компонент.
Устанавливается просто: открываешь dpk-файл, соответствующий твоей версии Delphi, компилируешь - получаешь 3 новуых закладки в палитре: BusinessSkinForm VCL, BusinessSkinForm DB VCL, BusinessSkinForm VCL Dialogs (так, по крайней мере, в V2.54)
Используется следующим образом: на обычную форму бросается компоненты bsBusinessSkinForm1: TbsBusinessSkinForm, bsSkinData1: TbsSkinData и bsStoredSkin1: TbsStoredSkin. Перевязываются между собой свойствами SkinData и StoredSkin. Всё, форма уже облагорожена, осталось привязать скин (на сайте разработчика есть библиотека скинов, штук эдак 30...), для этого назначbм bsStoredSkin1.FileName значение <путь к скину>skin.ini
Теперь бросаем на форму компоненты из закладки BusinessSkinForm VCL и не забываешь назначать им свойство SkinData

Вот, собственно и всё. Думаю, по такому же принципу работают другие шкурообразные наборы визуальных компонент
Ответ отправил: Артём Шегеда (статус: 5-ый класс)
Ответ отправлен: 04.04.2006, 18:35

Отвечает: AnD1
Здравствуйте, Lamer_Brother!
К каждому (ну или почти к каждому ;) ) должен быть файл .dpk (Delphi Package) Открываете его, по умолчанию, он открывается в Delphi (если нет - то запустите делфю, и откройте этот файл из неё), затем появляется окошко - где есть кнопочка Install (или Установка - в рус. версии), остается лишь нажать на нее, и если Вы скачали компоненты под Вашу версию Delphi, то они должны нормально (без ошибок) установиться, найти их можно на палитре компонентов (обычно они появляются в конце). Если такого файла к компоненту нет, а есть только сорцы (pas) то их нужно ставить вручную - "Компонент" => "Установить компонент" => далее выбираете файл модуля и далее дважды щелкаете "ОК". Если компонент не визуальный, а к нему идут только сырцы (pas и/или dcu) то их нужно кинуть в C:Program FilesBorlandDelphi7Lib (для 7 дельфи) и затем подключать через uses.
Ответ отправил: AnD1 (статус: 3-ий класс)
Ответ отправлен: 04.04.2006, 18:37


Вопрос № 39.383
Добрый вечер !
Вопрос я сегодня задал но поскольку в учебнике опечатка задал неправильно !
Вот ешё вопрос :
Как можно заблокировать рабочий стол в windows XP ! Даже несовсем заблокировать !
А при перезагрузке выводица InputQuery которое требует пароль !
Мне нужно чтобы пользователь несмог ничего зделать пока невведёт пароль !
Ваши предложения ?
Подходит даже вариант с растягиванием формы на весь экран !
Но она у меня почемуто не на весь экран растягиваеца а половина уходит за границу половино остаёца !
С уважением,
Zmeu
Отправлен: 04.04.2006, 20:39
Вопрос задал: Tamashev Denis M (статус: 2-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: AnD1
Здравствуйте, Tamashev Denis M!
Можно например так - см. приолжение - код котороый может включать/отключать кнопку "пуск" следовательно юзер не подберется к ребуту компа :), затем нужно отключить 3 пальца (Ctrl+Alt+Del и еще Ctrl+Shift+Esc) - как это сделать, можно найти в любом из FAQов. Остается лишь программный ребут компа, здесь можно перехватить вызов API отвечающий за ребут (точно не помню какая-именно), и если уже перехватить этот вызов, то можно предыдущие методы опустить (кажется это примерно делается так GetMessage(...) сообщение WM_QUIT, подробнее об этом можно почитать в справке Delphi). Ну вроде все, больше ничего придумать не могу. И еще: в справке с делфей поставляется отличный хелп - "Win32 Programmer's Reference", в нем много чего интересного ;)).

Приложение:

Ответ отправил: AnD1 (статус: 3-ий класс)
Ответ отправлен: 05.04.2006, 18:18
Оценка за ответ: 4
Комментарий оценки:
Ну насчёт кнопки пуск и блокирование клавишь это я знаю и уже вписал в програму !
Я хотел в реестре заменить что-б первым загружалась программа !
И при вводе превельного пароля грузился explorer.exe но ничего невышло !

Отвечает: Mrdimon
Здравствуйте, Tamashev Denis M!
В приложении листинг программы, которая написана на скорую руку. Нельзя незаметить факт, что она работает КРАЙНЕ КОРЯВО, но, надеюсь, что для раскачки поможет! :-)
Следует обратить Ваше внимание на небольшой, но очень важный момент - ГДЕ ВЫ СОБИРАЕТЕСЬ ХРАНИТЬ ПАРОЛИ??????? Кроме того, не забывайте, что хранить пароли в открытом виде - по меньшей мере глупо.
Удачи!

p.s. UserName = Tamashev Denis M
Password = RusFaq

Приложение:

Ответ отправил: Mrdimon (статус: 1-ый класс)
Ответ отправлен: 08.04.2006, 12:01
Оценка за ответ: 4


Вопрос № 39.399
Нужно сделать следующее.
Как сделать кнопку нажатой?
T.e. её надо нажать - она остается нажатой.
Потом надо ещё раз нажать - теперь она отжатая.
И чтобы в свойствах этой кнопки было показано типа:
нажата - True, отжата - False.
Есть ли такой компонент на Delphi 7.0?

P.S. Можно конечно без кнопки обойтись - есть другие средства, но всё же.
Заранее всем...
Отправлен: 05.04.2006, 00:39
Вопрос задал: AlexD (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Timoshin A.B.
Здравствуйте, AlexD!
У кнопки SpeedButton есть свойство Down=False/True.
---------
СЭ отбивает желание, отвечать на вопросы посетителей...
Ответ отправил: Timoshin A.B. (статус: 10-ый класс)
Ответ отправлен: 05.04.2006, 00:52

Отвечает: Лучников Ю.В.
Здравствуйте, AlexD!

Конечно есть;) TSpeedButton с вкладки Additional.

Чтобы она вела себя так, как вы описали, нужно сделать следующее:

1. Установить свойство TSpeedButton.AllowAllUp = True;
2. Установить свойство TSpeedButton.GroupIndex = >0 (больше нуля) Для того, чтобы назначить кнопке какую-либо группу.

Чтобы проверить состояние кнопки, воспользуйтесь свойством TSpeedButton.Down, которое возвращает True если кнопка нажата, иначе False.

Успехов!
Ответ отправил: Лучников Ю.В. (статус: *Администратор)
Россия, Киров
WWW: Чат Кировской молодежи
ICQ: 176308580
----
Ответ отправлен: 05.04.2006, 00:57


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.30 (beta) от 09.04.2006
Яндекс Rambler's Top100

В избранное