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

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


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


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

Выпуск № 158
от 02.05.2003, 22:20

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 618
Отправлено ответов: 1033
Активность: 167.1 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Stein
Статус: Доверительный
Общий рейтинг: 159.49
[Подробней >>]
Дима Мусиенко
Статус: Доверительный
Общий рейтинг: 111.11
[Подробней >>]
Илья
Статус: Опытный
Общий рейтинг: 103.81
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 603. Здравствуйте еще раз, эксперты У меня тут возник вопросик: как можно работать на Delphi с ADO так, ч... (ответов: 1)
Вопрос № 604. Уважаемые эксперты, Мне нужно вывести график XY с 4 четвертями. Скажите пожалуйста как с помощью TC... (ответов: 1)
Вопрос № 605. Здравствуйте, эксперты! У меня вопрос: можно ли в ColorBox русифицировать названия цветов? Заранее с... (ответов: 1)
Вопрос № 607. Здравствуйте уважаемые эксперты ! Помогите пожалуйста получить ответы на следующие вопросы: 1) я хоч... (ответов: 1)
Вопрос № 608. Скажите плиз! Где можно скачать делфи6?... (ответов: 1)

Вопросов: 5, ответов: 5


 Вопрос № 603

Здравствуйте еще раз, эксперты
У меня тут возник вопросик: как можно работать на Delphi с ADO так, чтобы программа работала без BDE.
Я пробовал, но все равно на "чистом" компьютере программа вызывает ошибку



Вопрос отправлен: 24.04.2003, 15:43
Отправитель: andix (andix@rambler.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Stein

Здравствуйте, andix!
Нет.

Ответ отправлен: 24.04.2003, 15:58
Отправитель: Stein


 Вопрос № 604

Уважаемые эксперты,
Мне нужно вывести график XY с 4 четвертями. Скажите пожалуйста как с помощью TChart вывести оси пересекающиеся по центру и положительные и отрицательные деления. И как выводить саму кривую(функции и методы)?
Спасибо!!



Вопрос отправлен: 24.04.2003, 17:18
Отправитель: dude

[Следующий вопрос >>] [Список вопросов]

Отвечает Дима Мусиенко

Доброе время суток, dude!
А чем Вас не устраивает Canvas. Если устраивает, то методы LineTo(x,y) и MoveTo(x,y).
А функцию выводить можно по-разному: поточечно, сплошной линией. Если первое, то SetPixel или PutPixel (к сожалению, точно непомню). Второе: LineTo, MoveTo.
Ну а координаты расчитывать несложно, конечно, всё зависимости от уравнения.
см. приложение.
А вообще советую поискать в сети исходники, таких задачек.

Приложение:

Ответ отправлен: 25.04.2003, 11:28
Отправитель: Дима Мусиенко


 Вопрос № 605

Здравствуйте, эксперты!
У меня вопрос: можно ли в ColorBox русифицировать названия цветов?
Заранее спасибо!



Вопрос отправлен: 25.04.2003, 14:43
Отправитель: andix (andix@rambler.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Stein

Добрый день, andix!
Исправляй компонент, или ищи готовый в и-нете.

Ответ отправлен: 25.04.2003, 15:06
Отправитель: Stein


 Вопрос № 607

Здравствуйте уважаемые эксперты !
Помогите пожалуйста получить ответы
на следующие вопросы:
1) я хочу сделать, чтобы моя программа
запускалась планировщиком по расписанию.
Как программно сделать проверку, находится
ли уже программа в памяти, чтобы вторая
копия не запускалась ?
2) программа сидит в памяти. Пользователи
при завершении работы с Windows не закрывают
ее кнопкой, просто забывают о программе. А по
кнопке выполняются действия для правильного
закрытия программы. Как мне в программе отловить
момент, когда завершают работу с Windows и
выполнить нужные действия ?
3) как из моей программы запускать другие приложения,
например Word с нужным мне документом ?
4) как программно нажимать кнопки на форме ?
Буду благодарен любой информации, особенно кускам кода.
Оболочка Delphi 3.
Радик.



Вопрос отправлен: 28.04.2003, 12:00
Отправитель: Радик (rdk78@nightmail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Stein

Здравствуйте, Радик.
Про копии.
1.
...
Uses syncobjs;
...
Var
CheckEvent: TEvent;
...
procedure TForm1.FormCreate( Sender: TObject );
begin
CheckEvent:= TEvent.Create( nil, false, true, 'MYPROGRAM_CHECKEXIST' );
If CheckEvent.WaitFor( 10 ) <> wrSignaled then
begin
// Сюда попадаем если одна копия уже запущена. Можно, например, сообщить об этом пользователю.
Self.Close; // Здесь можно завершить программу или сделать еще что-нибудь.
end;
end;
2.
program Project1;
uses
Forms,
Windows,
Unit1 in 'Unit1.pas' {Form1};
{$R *.RES}
var
hwnd: THandle;
begin
hwnd := FindWindow('TForm1', 'Form1');
if hwnd = 0 then
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end
else
SetForegroundWindow(hwnd)
end.
3.
program pds;
uses
Windows,
Forms,
Main in 'MAIN.PAS' {MainForm},
const
MemFileSize=127;
MemFileName='one_example';
var
MemHnd:HWND;
{$R *.RES}
begin
MemHnd:=CreateFileMapping(HWND($FFFFFFFF),nil,
PAGE_READWRITE,0,MemFileSize,
MemFileName);
if GetLastError<>ERROR_ALREADY_EXISTS then
begin
Application.Initialize;
with TForm1.Create(nil) do
try
Show;
Update;
Application.CreateForm(TMainForm, MainForm);
finally
Free;
end;
Application.Run;
end else Application.MessageBox('Приложение уже запущено (возможно оно свёрнуто на панели задач): Нажмите кнопку ОК для продолжения работы','Производственно-диспетчерская служба',MB_OK);
CloseHandle(MemHnd);
end.
4.
Избежать запуск второй копии можно еще проще (может быть):
в *.dpr файле
ActivatePrevInstance('TForm1','Значение Caption ')
5.
program Previns;
uses
WinTypes,
WinProcs,
SysUtils,
Forms,
Uprevins in 'UPREVINS.PAS' {Form1};
{$R *.RES}

type
PHWND = ^HWND;

function EnumFunc(Wnd:HWND; TargetWindow:PHWND): bool; export;
var
ClassName : array[0..30] of char;
begin
Result := true;
if GetWindowWord(Wnd,GWW_HINSTANCE) = hPrevInst then
begin
GetClassName( Wnd, ClassName, 30 );
if StrIComp( ClassName, 'TApplication' ) = 0 then
begin
TargetWindow^ := Wnd;
Result := false;
end;
end;
end;

procedure GotoPreviousInstance;
var
PrevInstWnd : HWND;
begin
PrevInstWnd := 0;
EnumWindows( @EnumFunc, Longint( @PrevInstWnd ) );
if PrevInstWnd <> 0 then
if IsIconic( PrevInstWnd ) then
ShowWindow( PrevInstWnd, SW_RESTORE )
else
BringWindowToTop( PrevInstWnd );
end;

begin
if hPrevInst <> 0 then
GotoPreviousInstance
else
begin
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
end.
Количество запущенных копии программы.
program CrtApp;

uses SysUtils,WinTypes,WinProcs,WinCrt;

var
NumInstances,SavePrevInst : word;

procedure GetInstanceData(hInst,Offset,Size:Word); far; external 'KERNEL';

begin
SavePrevInst := hPrevInst;
NumInstances := 0;
While hPrevInst <> 0 do
begin
GetInstanceData(hPrevInst,Ofs(hPrevInst),SizeOf(hPrevInst));
Inc(NumInstances);
end;
Writeln('Уже запущено ',NumInstances,' копий программы');
hPrevInst := SavePrevInst;
end.
Про программное нажатие.
// для WINNT
К сожалению работает хорошо, только когда фокус у вызывающего окна, в противном случае может глючить
procedure TForm1.SetKey(Key:Integer);
begin
keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY,0);
keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
end;
Применение
SetKey(VK_SCROLL);
SetKey(VK_CAPITAL);
Про запуск программ.
Просто можно запустить файл с параметрами, как из Run. Запустить можно или OpenFile(тра ля ля)-прочитай в хэлпе по win32api. Можно CreateProcess, блин, есть ещё проще, что-то не помню, другие эксперты напишут точно!
Про закрытие программы.
Обрабатывай на форме событие OnClose и OnCloseQuery.
PS Извиняюся за орфографию(спешу).


Ответ отправлен: 28.04.2003, 16:17
Отправитель: Stein


 Вопрос № 608

Скажите плиз!
Где можно скачать делфи6?



Вопрос отправлен: 29.04.2003, 22:13
Отправитель: Кирилл

[Следующий вопрос >>] [Список вопросов]

Отвечает Илья

Доброе время суток, Кирилл!
Ты это серьёзно??? А на рынок за компактом сходить влом???
http://www.borland.com/products/downloads/download_delphi.html
З.Ы. По ссылке Delphi 7.0, но можешь там-же поискать 6.0

Ответ отправлен: 30.04.2003, 21:09
Отправитель: Илья



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


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


Получить ответов:


 Выбор рассылки

Программисту
Assembler (35)
C / C++ (28)
Perl (6)
Delphi (13)
Pascal (24)
Basic / VBA (5)
Java / JavaScript (8)
PHP (4)
MySQL / MSSQL (4)
Пользователю
Windows 95/98/Me (29)
Windows NT/2000/XP (24)
"Железо" (25)
Поиск информации (12)
Администратору
Windows NT/2000/XP (13)
Linux / Unix (10)
Юристу
Гражданское право (7)
Семейное право (4)
Трудовое право (5)
КоАП (4)

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




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное