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

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

Автор: GRom V
Дата сообщения: 26.11.2010 08:49
mcdie

спасибки Form.Align := alCustom; работает!
Автор: YuriyRR
Дата сообщения: 27.11.2010 23:18
GRom V

Цитата:
Подскажите как можно запретить перетаскивание окна(формы) мышкой?

Можно убрать заголовок. В класс формы добавляешь метод
procedure CreateParams(var Params: TCreateParams); override;

procedure TTRANSPORT.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
Style := (Style or WS_POPUP) and (not WS_DLGFRAME);
end;
Автор: GRom V
Дата сообщения: 29.11.2010 02:30
Еще вопрос... не знаю как по корректнее:
Можно ли скрипт написанный на vbs вставить в delphi?
Автор: YuriyRR
Дата сообщения: 29.11.2010 02:52
GRom V

Цитата:
Можно ли скрипт написанный на vbs вставить в delphi?

Ну самое простое наверное через ShellExecute.
Автор: ShIvADeSt
Дата сообщения: 29.11.2010 05:02
GRom V

Цитата:
Можно ли скрипт написанный на vbs вставить в delphi?

Что подразумевается под словом вставить?
1. Засунуть в ресурс (да можно, только нафига)
2. Выполнить (да можно, разные способы на всякий случай перед скриптом cscript.exe указываем).
3. Получить данные, выдаваемые скриптом (да можно, сохраняй их в файл и читай после окончания действия скрипта из программы).
Автор: GRom V
Дата сообщения: 29.11.2010 09:48
ShIvADeSt

Цитата:
2. Выполнить (да можно, разные способы на всякий случай перед скриптом cscript.exe указываем).


Да именно это мне и нужно...а как это на практике ...

procedure TForm1.Button1Click(Sender: TObject);
begin
[сценарий vbs]
end;

Автор: tanaseduard
Дата сообщения: 29.11.2010 10:10
GRom V
ShellExecute?
Автор: ShIvADeSt
Дата сообщения: 29.11.2010 10:26
GRom V

Цитата:
procedure TForm1.Button1Click(Sender: TObject);
begin
[сценарий vbs]
end;

Э нет, так нельзя, вот так примерно можно
procedure TForm1.Button1Click(Sender: TObject);
begin
WinExec('cscript.exe myscript.vbs',SW_SHOW);
end;

если тебе надо как то получить результат - то добавляй в скрипте вывод в текстовый файл и по окончании работы читай из него. Возможно есть другие способы, но пока не видно что делает скрипт - подсказать не получится.
Автор: GRom V
Дата сообщения: 29.11.2010 13:05
ShIvADeSt

Цитата:
WinExec('cscript.exe myscript.vbs',SW_SHOW);

Это то понятно... я думал можно как то сам сценарий прописать...
Автор: tanaseduard
Дата сообщения: 29.11.2010 13:43
GRom V
Что имеется в виду?
Как прописать сценарий?
Автор: Frodo_Torbins
Дата сообщения: 29.11.2010 14:22
GRom V
Встроить в свою прогу тоже можно. Погуглите на Windows Scripting Host, вроде должен быть компонент для делфи.
Автор: GRom V
Дата сообщения: 29.11.2010 14:27
tanaseduard

Цитата:
Что имеется в виду?
Как прописать сценарий?

Имелось ввиду код написанный на vbs исполнить в делфи....видимо никак.
Автор: tanaseduard
Дата сообщения: 29.11.2010 14:42
GRom V
Хм... Не сталкивался с такой задачей.
Может лучше прикрепить библиотеку интерпретатора?
Автор: Frodo_Torbins
Дата сообщения: 29.11.2010 15:06
GRom V
Еще поддержка бейсика есть в TMS Scripter Studio и FastScript, но они платные.
Автор: tanaseduard
Дата сообщения: 29.11.2010 15:09
GRom V
В варезнике вроде пробегали компоненты.
Автор: GRom V
Дата сообщения: 30.11.2010 02:47
Всем огромное спасибо!
еще вопросик...
нашел это (код ниже), так вот, если соединения с модемом нет, то выскакивает ошибка.
Можно ли это избежать, тоесть чтоб никаких ошибок не выскакивало?

procedure TForm1.Button1Click(Sender: TObject);
var
attach: TidAttachment;
msg: tidmessage;
i: integer;
begin
IdSMTP1.AuthenticationType:= atLogin;
IdSMTP1.Username:='логин'; // ваш логин
IdSMTP1.Password:='пароль'; // пароль
IdSMTP1.Host:='smtp.mail.ru'; // хост mail.ru
IdSMTP1.Port:=25; // порт mail.ru
msg:=TIdMessage.Create(nil);
msg.Body.Add('soobshenie pisma'); // сообщение письма
msg.Subject:='zagolovok pisma'; // заголовок письма (Тема)
msg.From.Address:='user@mail.ru'; // от кого отправляем письмо
msg.From.Name:='imya otpravitelya'; // имя отправителя
msg.Recipients.EMailAddresses:='user2@mail.ru'; // кому отправить письмо
msg.IsEncoded:=true;
IdSMTP1.Connect(6000);
if IdSMTP1.Connected then
begin
IdSMTP1.Send(msg);
end
else
IdSMTP1.Disconnect;
end;

end.
Автор: tanaseduard
Дата сообщения: 30.11.2010 08:25
GRom V
Try
//Код
Except
On E:Exception do
begin
end;
End;
Автор: Man_Without_Face
Дата сообщения: 30.11.2010 12:19
Доброго времени суток. Подскажите самый быстрый и простой способ импорта из экселя (записать нужно через record в Tlist). Если можно пример или ссылку. Спасибо.
Автор: mcdie
Дата сообщения: 30.11.2010 13:29
Man_Without_Face
[more]

Код:
function Xls_To_List(List: TStringList; AXLSFile: string): Boolean;
const
xlCellTypeLastCell = $0000000B;
var
XLApp, Sheet: OLEVariant;
RangeMatrix: Variant;
x, y, k, r: Integer;
begin
Result := False;
// Create Excel-OLE Object
XLApp := CreateOleObject('Excel.Application');
try
// Hide Excel
XLApp.Visible := False;

// Open the Workbook
XLApp.Workbooks.Open(AXLSFile);

// Sheet := XLApp.Workbooks[1].WorkSheets[1];
Sheet := XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1];


Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
x := XLApp.ActiveCell.Row;

y := XLApp.ActiveCell.Column;

// Assign the Variant associated with the WorkSheet to the Delphi Variant

RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value;
k := 1;
repeat
List.Add(RangeMatrix[K, 1]);
Inc(k, 1);
until k > x;
// Unassign the Delphi Variant Matrix
RangeMatrix := Unassigned;

finally
// Quit Excel
if not VarIsEmpty(XLApp) then
begin
// XLApp.DisplayAlerts := False;
XLApp.Quit;
XLAPP := Unassigned;
Sheet := Unassigned;
Result := True;
end;
end;
end;
Автор: GRom V
Дата сообщения: 30.11.2010 13:52
tanaseduard

Цитата:
Try
//Код
Except
On E:Exception do
begin
end;
End;

СеНкЮ! работает...
Автор: tanaseduard
Дата сообщения: 30.11.2010 13:57
GRom V
np
Автор: mcdie
Дата сообщения: 30.11.2010 14:14
GRom V Или так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
attach: TidAttachment;
msg: tidmessage;
i: integer;
begin
IdSMTP1.AuthenticationType:= atLogin;
IdSMTP1.Username:='логин'; // ваш логин
IdSMTP1.Password:='пароль'; // пароль
IdSMTP1.Host:='smtp.mail.ru'; // хост mail.ru
IdSMTP1.Port:=25; // порт mail.ru
msg:=TIdMessage.Create(nil);
try
msg.Body.Add('soobshenie pisma'); // сообщение письма
msg.Subject:='zagolovok pisma'; // заголовок письма (Тема)
msg.From.Address:='user@mail.ru'; // от кого отправляем письмо
msg.From.Name:='imya otpravitelya'; // имя отправителя
msg.Recipients.EMailAddresses:='user2@mail.ru'; // кому отправить письмо
msg.IsEncoded:=true;
try
try
IdSMTP1.Connect(6000);
if IdSMTP1.Connected then
begin
IdSMTP1.Send(msg);
end;
Except
On E:Exception do
begin
// MessageDlg('Ошибка: ' + E.message, mtInformation, [mbOK], 0);
end;
end;
finally
IdSMTP1.Disconnect;
end;
finally
msg.free;
end;
end;
Автор: YuriyRR
Дата сообщения: 30.11.2010 22:52
Man_Without_Face

Цитата:
быстрый и простой способ импорта из экселя

без OLE можно использовать компоненты TXLSRedsWriteII TXLSFile
Автор: GRom V
Дата сообщения: 01.12.2010 02:00
mcdie
тож зашибись! Спасибо!
Автор: Maks150988
Дата сообщения: 02.12.2010 06:09
Привет. Тема значит вот http://rsdn.ru/forum/winapi/4060479.1.aspx и там главное 5 и 6 сообщение, меня заинтересовало удаление массива без утечки памяти, правильно ли я освобождаю указатели на строки через SetLength? У сишников оператор delete, а у нас?
Автор: ShIvADeSt
Дата сообщения: 02.12.2010 06:34
Maks150988
Для динамических массивов SetLength(..,0) - освобождает память (согласно хелпа). Насчет семерки - попробуй перед получением данных вначале опросить сколько айтемов в комбобоксе. Возможно семерка при WM_CLOSE вначале уничтожает контролы.
Автор: dred2k
Дата сообщения: 03.12.2010 14:05
ShIvADeSt, при WM_CLOSE ничего уничтожаться не может. Обычное событие - закрытие окна. Уничтожается в дестрое. И семерка (версия) тут абсолютно не при чем.
Автор: ShIvADeSt
Дата сообщения: 06.12.2010 03:36
dred2k

Цитата:
при WM_CLOSE ничего уничтожаться не может. Обычное событие - закрытие окна. Уничтожается в дестрое. И семерка (версия) тут абсолютно не при чем.

Знаю тогда только через дебаггер смотреть что нам возвращается.
Автор: Man_Without_Face
Дата сообщения: 06.12.2010 12:58
Доброго времени суток. Есть OpenDialog с таким вот фильтром:
frmMain.OpenDialog1.Filter := 'Файлы отчетов KX|KX??????.*' +
'|Все файлы|*.*';
Можно ли сделать чтобы длина названия файла была и 8 и 9 знаков одновременно (например так OX3561012.001 и так OХ451008.029). Спасибо.

Добавлено:
Вопрос решил так:
rmMain.OpenDialog1.Filter := 'Файлы отчетов KX|KX*.*' +
'|Все файлы|*.*';
Автор: tanaseduard
Дата сообщения: 06.12.2010 14:16
Man_Without_Face
KX*.*
или
KX?????????.*

Хотя по поводу последнего не помню или отработает маска, надо проверить.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374

Предыдущая тема: MPO File


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