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

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

Автор: skinash
Дата сообщения: 30.08.2007 08:01
Maks150988
Извини, не знаю. Код который тебе привёл из соего загашника - наиболее, на мой взгляд, подходящее к твоему вопросу. Я его не тестил.

Добавлено:
iTASmania_Inc
Используй ту Delphi, по которой у тебя учебник есть.
Автор: iTASmania_Inc
Дата сообщения: 30.08.2007 08:16
skinash
Delphi 6? Это не вариант. А нормальный (более-менее понятный) учебник на более новую версию почему-то не найду!
Автор: skinash
Дата сообщения: 30.08.2007 08:56
iTASmania_Inc
В том то и дело, что учебников для Delphi 2005-2007 попросту нет. Нормальные учебники были начиная с Delphi 4.
Конечно Delphi2007 красивее и функциональнее чем Delphi7, но нафига тебе всё это, если ты не знаешь как этим пользоваться?
С чего начинается изучение Delphi? С VCL компонентов (под Win32). 100% TForm, TButton, TEdit, TMemo. Всё это есть в Delphi1. А вот когда поймёшь принципы работы и поймёшь, что ты хочешь от этой самой Дельфи, тогда сам сможешь выбрать версию.
Короче, если у тебя учебник для Delphi6 ставь её и не парься. Париться надо где?... на парах...
Автор: iTASmania_Inc
Дата сообщения: 30.08.2007 09:01
skinash

Цитата:
Париться надо где?... на парах...

Спасибо, мне пока сложного не надо, TForm, TPanel - мне пока больше ничего не надо от Дельфи.
Автор: GreatOne
Дата сообщения: 30.08.2007 09:10
С помощью какого компонента в дельфи лучьше(удобней, быстрей, проще) всего создавать отчеты при работе с MySQL?
Автор: SERGE_BLIZNUK
Дата сообщения: 30.08.2007 09:50
skinash
замечу только, что всё же лучше учится всё таки на той версии, с которой потом будешь работать. Delphi7 - вполне пристойный вариант (если не планируется кодировать под .NET). И в боях испытана, и пробу временем прошла, и литературы достаточно. А я, например, до сих пор использую версию 5.
Автор: relictus
Дата сообщения: 30.08.2007 10:25
В RxLib есть такой контрол TDirectoryEdit (выбор папки). Как его "заставить" запоминать последнюю выбранную папку (типа использовать MRU)?
Помниться, раньше в D7 как-то делал без проблем, а в BDS2006 что-то не соображу в чем дело.... Св-во DialogKind = dkWin32.
Автор: skinash
Дата сообщения: 30.08.2007 10:48
GreatOne
QuickReport, FastReport и т.д.
Автор: XPSDim
Дата сообщения: 30.08.2007 10:57
relictus

Цитата:
В RxLib есть такой контрол TDirectoryEdit (выбор папки). Как его "заставить" запоминать последнюю выбранную папку (типа использовать MRU)?
Помниться, раньше в D7 как-то делал без проблем, а в BDS2006 что-то не соображу в чем дело.... Св-во DialogKind = dkWin32.
в той же RXLib есть компонента TFormStorage, вот ее можно использовать...
Автор: lavren
Дата сообщения: 30.08.2007 12:37
Уважаемый АЛЛ!
У кого нибуть есть пример на Delphi перевода BMP->PCX-формат?
Автор: RostY
Дата сообщения: 30.08.2007 13:09
lavren
ImageEn: Load and save compressed and uncompressed PCX images in 2,16, 256 or 16M colors to file or stream.
_http://www.hicomponents.com/nimageen.asp

Добавлено:
или "Envision Image Library"

Добавлено:
пример из Envision:
[more]
Each class derived from TDibGraphic is responsible to read and write a particular file format. See the class reference section for a listing of the descendant classes.

To convert a file from one format to another, one TDibGraphic derived object is created to read the file, while another is created to save the file in another format. For example, to convert a PCX file to a PNG file:

uses
EnPcxGr,
EnPngGr;

var
PcxGraphic : TPcxGraphic;
PngGraphic : TPngGraphic;

begin
PcxGraphic := TPcxGraphic.Create;
PngGraphic := TPngGrahpic.Create;
try
PcxGraphic.LoadFromFile('c:\images\home.pcx');

PngGrahpic.Assign(PcxGraphic);

PngGraphic.SaveToFile('c:\images\home.png');
finally
PngGraphic.Free;
PcxGraphic.Free;
end;
end;
[/more]

Добавлено:
Еще нашел у себя какой-то ImageLib Corporate Suite 60 для Дельф 4,5,6 с сорцами
Автор: AntonVA1
Дата сообщения: 30.08.2007 14:44

Цитата:
В том то и дело, что учебников для Delphi 2005-2007 попросту нет.


Мдя, посмотрим:
1. Delphi 2005 для NET Марков Никифоров
2. Delphi 2005 для WIN32 Марков Дарахвелидзе
3. Delphi 2005 Секреты программирования Флёнов
4. Прогр. в Delphi2005 Боровский 2005

И это только то что я нашел.

Цитата:
Нормальные учебники были начиная с Delphi 4.

С этим не спорю, НО: реально необходимо норальное описание языка Object Pascal и возможностей компонентов. Первое почти не поменялось, второе поменялось больше, но все равно оечень похоже.
Таким образом: изучаем IDE по новым книгам, язык по старым.
ИМХО

ЗЫ: Стоит не забывать, что у Delphi 2007 появилась совместимость с вистой. На будущее пригодится. (Хотя кому как)
Автор: lavren
Дата сообщения: 30.08.2007 17:03
RostY

Да простят меня модераторы за то что не в тему пишу , но боюсь не поймаю тебя в другой!
А таблеток от жадности для этих компонент где можно взять?
Автор: idiMAN
Дата сообщения: 30.08.2007 17:32
Существует ли книга, в которой описываются новшества версий Delphi 2005 - 2007 с примерами их использования?
Автор: Maks150988
Дата сообщения: 30.08.2007 17:39
skinash жалко тогда. Хотелось бы прогресс сделать.

Подскажите тогда если кто знает как можно сделать спецэффект с появлением диалога. Делал с AnimateWindow, но когда есть формление XP, то наверху остаются черные "следы", когда угол у окна должен быть закруглен. Этот недостаток хотелось бы убрать или это такая трабла?
И еще подскажите как можно заставить двигаться текст допустим слева направо в статик элементе?
Автор: AntonVA1
Дата сообщения: 30.08.2007 19:06
idiMAN
Книги такой нет- есть разрозненная информация в книгах, описывающих разные версии делфи. Так же есть статьи например, здесь: hччp://prodelphi.nnm.ru/ есть описание 2007.
Все остальное я читал в разных книгах (сам сейчас перехожу с delphi 6 на 2007, поэтому и изучал)
Автор: Maks150988
Дата сообщения: 30.08.2007 20:48
Ммм... Поиском толком не нашел. Значит захотелось мне программу в автозапуск вреестре соунуть. Значит код:

Код:
procedure AddAutorun;
var
key : hkey;
begin
RegCreateKey(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Windows\CurrentVersion\Run', key);
RegSetValueEx(key, 'Program', 0, REG_SZ, PChar(paramstr(0)), lstrlen(pchar(paramstr(0)))+1);
RegCloseKey(key);
end;
Автор: AntonVA1
Дата сообщения: 30.08.2007 22:41
Maks150988
Попробуем воспользоваться гуглом, запрос "delphi автозапуск"

Цитата отсюда


Цитата:

А теперь более простой способ - запись ключа в секцию run реестра. Ниже в одной процедуре совмещено и его создание, и удаление.

uses registry;
//.

procedure changereg(strname: shortstring; delete: boolean);
var
reg: tregistry;
begin
reg := nil;
try
reg := tregistry.create;
reg.rootkey := hkey_local_machine;
reg.lazywrite := false;
reg.openkey('softwaremicrosoftwindowscurrentversionrun',false);
if not delete then reg.writestring(strname, application.exename)
else reg.deletevalue(strname);
reg.closekey;
reg.free;
except
if assigned(reg) then reg.free;
end;
end;

procedure tform1.addbtnclick(sender: tobject);
begin
changereg('my app',false); //добавляем в Автозагрузку
end;

procedure tform1.removebtnclick(sender: tobject);
begin
changereg('my app',true); //удаляем из Автозагрузки
end;


Еще посмотри здесь , здесь Правда та мбез удаления...
Ну, можешь и другие ссылки посмотреть, там их еще много...
Автор: Maks150988
Дата сообщения: 30.08.2007 23:07
AntonVA1 спасибо. все работает. просто я искал RegDeleteValue в поисковиках и ничего толком нет.
Автор: antonn2
Дата сообщения: 30.08.2007 23:47

Цитата:
hkey_local_machine

по рукам линейкой настучать бы
туда записи может не быть, и она общая для всех юзеров, для себя родимого нужно юзать HKEY_CURRENT_USER
Автор: yuish
Дата сообщения: 31.08.2007 09:17
Maks150988
В статик элементе - не знаю, но с помощью компонента TWebBrowser у меня сделано было так:

procedure SetRunText(Web: TWebBrowser; Text: ansistring);
var txtr:ansistring;
begin
txtr:='about:<body topmargin="0" leftmargin="0" marginwidth="0"'+
'rightmargin="0" bottommargin="0" scroll="no"> <marquee height="'+
IntToStr(Web.height-5)+'" width="'+IntToStr(Web. width)+
'"bgcolor="white" scrollamount="3"><small>';
txtr:=txtr+text;
txtr:=txtr+'</small></marquee></body>';
Web.Navigate(txtr);
end;

запуск: SetRunText(WebBrowser1,'бла-бла-бла');

единственно что текст нельзя использовать длиннее 255 символов
Автор: lavren
Дата сообщения: 31.08.2007 09:24
antonn2


Цитата:
туда записи может не быть


А может и бить! Надо из условий задачи смотреть, может нужно чтобы под всеми пользователями запускалось?
Автор: antonn2
Дата сообщения: 31.08.2007 20:26
lavren
не вижу там кода проверки, скорее код "на вылет"

Код: var
reg: tregistry;
begin
reg := tregistry.create;
try
reg.rootkey := hkey_local_machine;
reg.lazywrite := false;
reg.openkey('softwaremicrosoftwindowscurrentversionrun',false);
if not delete then reg.writestring(strname, application.exename)
else reg.deletevalue(strname);
reg.closekey;
finaly
reg.free;
end;
Автор: SiberianGRemlin
Дата сообщения: 01.09.2007 13:24
Что-то ничего не пойму...
Не работает: WinExec(PAnsiChar('excel.exe "'+SaveDialog1.FileName+'"'),1);
Но работают:
WinExec(PAnsiChar('notepad.exe "'+SaveDialog1.FileName+'"'),1);
WinExec(PAnsiChar('mspaint.exe "'+SaveDialog1.FileName+'"'),1);

Подскажите, пожалуйста, в чём загвостка? И подскажите, пожалуйста, как узнать установлен ли Excel в пакете MS Office?
Автор: SERGE_BLIZNUK
Дата сообщения: 01.09.2007 13:45
SiberianGRemlin
загвоздка не в том, установлен ли Excel - а в том, что Вы не указываете к нему путь!
mspain.exe и notepad.exe лежать в самой Windows (в XP - в папке system32)
Если вы в комаднной строке наберёте команду path - увидите пути, по которым Windows ищет exe файл, когда Вы пытаетесь его запустить...
значит, Вы должны указать полный путь к Вашему excel.exe
Стандартно, Office ставится в папку "C:\Program Files\Microsoft Office\"
дальше, в зависимости от версии Excel. Для MS Office 2003 полный путь будет такой:
"C:\Program Files\Microsoft Office\OFFICE11\excel.exe".
Но пользователь при установке может указать ЛЮБУЮ директорию, куда поставить Office!
Автор: AntonVA1
Дата сообщения: 01.09.2007 13:50
SiberianGRemlin
А ты попробуй их из командной строки позапускать (выполнить- cmd)
Все дело в том, что notepad.exe и mspaint.exe лежат в каталоге, прописанном в PATH, а excel.exe- в своей папке, т.е. нужно прописывать путь

Добавлено:
SERGE_BLIZNUK
Ха! меня опередили
Автор: SERGE_BLIZNUK
Дата сообщения: 01.09.2007 14:06
проверить наличие установленного Excel на машине пользователя проще всего через OLE.
И, кстати, открыть ваш файл в Excel - так же!
[more=смотри пример открытия файла]

Код:
procedure TForm1.Button1Click(Sender: TObject);
var ExcelApp : olevariant;
begin
if SaveDialog1.Execute then
begin
try
ExcelApp:=CreateOleObject('Excel.Application');
ExcelApp.Visible:=False;
except
Application.MessageBox( 'Microsoft Excel не установлен.',
'Error', MB_ICONERROR or MB_OK);
end;
ExcelApp.WorkBooks.Add(SaveDialog1.FileName);
ExcelApp.Visible := true;
end;
end;
Автор: SiberianGRemlin
Дата сообщения: 01.09.2007 14:26
Excel запускается из любой папки и открывает файл, путь к которому переданнаётся Excel'у как параметр. Почему WinExec не может найти Excel мне непонятно. Если написать в WinExec полный путь к Excel, то он запустится. Обязательно лесть в реестр, чтобы путь узнать... может можно как-то использовать переменные среды?

P.S.: Мы находимся в ветке программирования, а вы мне рассказываете, что пользователь может выбрать любую папку для установки ПО. =)))))
Автор: AntonVA1
Дата сообщения: 01.09.2007 15:49
Ладно, читаем справку по WinExec: [more]

Parameters

lpCmdLine

Points to a null-terminated character string that contains the command line (filename plus optional parameters) for the application to be executed. If the name of the executable file in the lpCmdLine parameter does not contain a directory path, Windows searches for the executable file in this sequence:

1.    The directory from which the application loaded.
    2.    The current directory.
    3.    The Windows system directory. The GetSystemDirectory function retrieves the path of this directory.
    4.    The Windows directory. The GetWindowsDirectory function retrieves the path of this directory.
    5.    The directories listed in the PATH environment variable.
[/more]

Это подтверждает то, что я писал, и дает понять тебе почему у тебя не работает.
Что бы сделать то что ты хочешь, нужно прописать в WinExec не excel а команду start с файлом, который тебе нужно открыть. Винда запустит ассоциированную с этим расширением программой. Это насколько я помню, не смог найти рабочий вариант.

Кстати в справке написано еще это:

Цитата:

The WinExec function runs the specified application.

This function is provided for compatibility with earlier versions of Windows. For Win32-based applications, use the CreateProcess function.


Добавлено:
Еще я делал так:
procedure TSplashForm.lblVersionClick(Sender: TObject);
const
Mail = 'mailto:111@inbox.ru';
begin
ShellExecute(Handle, 'open', Mail, nil, nil, SW_SHOW);
end;

Открывает почтовик по умолчанию
Автор: Maks150988
Дата сообщения: 01.09.2007 20:53
Здраствуйте. Подскажите сайты, где можно нарыть исходники для просмотра таблицы импорта исполняемых файлов. Требуется отображать данные через SysListView32 на ВинАпи. Хотелосьбы также глянуть на исходни для просмотра Делэй Импорта.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: 1С: Конвертация данных 2.0


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