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

» Вопросы по Delphi 2

Автор: Bonivur
Дата сообщения: 10.09.2006 08:50
У меня 2 вопроса :
1)
Прикрутил к Memo свой PopUp и все бы хорошо пока не дошло дело до комманды "Удалить". Комманду то сделал, Memo1.ClearSelection, а вот как в PopUp shortcut показать (справа от имени комманды)? В Свойстве ShortCut этой комманды меню можно выставить Del и тогда надпись появляется, но работать кнопка Delete начинает только с выделенным текстом, а символы справа от курсора не удаляет. Что делать?

2)
На форме стоит ComboBox (с английскими словами) и Image с картинкой Я использую комбинацию клавиш Ctrl+C для копирования Image в буфер. Но при этом срабатывает AutoComplete комбобокса и в нем вылезает слово начинающееся на букву 'c'. Естественно я поставил AutoComplete:=false - не помогает. Как быть не отключая полностью функцию автозавершения (для остальных случаев надо чтобы в комбобоксе выбиралось слово по первой введенной букве).
Автор: xitsmex
Дата сообщения: 10.09.2006 10:07
Bonivur
1. if Memo1.SelLength = 0 then { удаляй символ, которые тебе хочется (с позиции selstart, соответственно) }
2. А не поможет в OnKeyDown написать:
if ssCtrl in Shift then key := #0; ?
Arvur
Если не сложно - можно пример на почту? ник_гмаил_цом.
Автор: MFPSoftware
Дата сообщения: 10.09.2006 10:45
Делаю программку и мне нужно узнать имя файла выбранного файла через OpenDialog (OpenINI).
Вот код:

Код: OpenINI.Execute();
FileName := OpenINI.FileName;
FilePatch.Text := FileName;
for i:=length(FileName) downto 1 do
begin
if FileName[i]='\' then CopyFileName := copy(FileName,(i+1),Length(FileName));
end;
Автор: xitsmex
Дата сообщения: 10.09.2006 11:50
MFPSoftware
Проще использовать готовые велосипеды . Например, так: ExtractFileName('D:\myfile\mydir\fil.txt'); получим 'fil.txt'.
Автор: MFPSoftware
Дата сообщения: 10.09.2006 12:10
xitsmex
спасибо =) Я просто искал что-то подобное, но так и не смог найти =(

Добавлено:
А как получить путь к папке, в которой находится программа?
Автор: Arvur
Дата сообщения: 10.09.2006 15:32
xitsmex

Цитата:
Если не сложно - можно пример на почту?

_http://cc.borland.com/Item.aspx?id=19823
Автор: Bonivur
Дата сообщения: 10.09.2006 16:43
xitsmex

Цитата:
2. А не поможет в OnKeyDown написать:
if ssCtrl in Shift then key := #0; ?

Не помогает... Все равно ComboBox перехватывает эту 'C'.

Цитата:
1. if Memo1.SelLength = 0 then { удаляй символ, которые тебе хочется (с позиции selstart, соответственно) }

а как удалить символ справа от курсора в TMemo?
Автор: afiget
Дата сообщения: 10.09.2006 16:54
MFPSoftware
ExtractFilePath(Application.ExeName);

Добавлено:
Bonivur

Цитата:
а как удалить символ справа от курсора в TMemo?

SelLength:=1;
ClearSelection();
Автор: ArtemiyUO
Дата сообщения: 11.09.2006 06:39
xitsmex
вот юнит для чиения версионинфо
[more]
Код:
{*******************************************************}
{ }
{ Delphi VCL Extensions (RX) }
{ }
{ Copyright (c) 1995, 1996 AO ROSNO }
{ }
{*******************************************************}

unit RxVerInf;

{ Working with VERSIONINFO resourse type }


{$IFDEF RX_D3}
{$WEAKPACKAGEUNIT}
{$ENDIF}

interface

uses {$IFDEF WIN32} Windows {$ELSE} Ver {$ENDIF};

type
TVersionLanguage = (vlArabic, vlBulgarian, vlCatalan, vlTraditionalChinese,
vlCzech, vlDanish, vlGerman, vlGreek, vlUSEnglish, vlCastilianSpanish,
vlFinnish, vlFrench, vlHebrew, vlHungarian, vlIcelandic, vlItalian,
vlJapanese, vlKorean, vlDutch, vlNorwegianBokmel, vlPolish,
vlBrazilianPortuguese, vlRhaetoRomanic, vlRomanian, vlRussian,
vlCroatoSerbian, vlSlovak, vlAlbanian, vlSwedish, vlThai, vlTurkish,
vlUrdu, vlBahasa, vlSimplifiedChinese, vlSwissGerman, vlUKEnglish,
vlMexicanSpanish, vlBelgianFrench, vlSwissItalian, vlBelgianDutch,
vlNorwegianNynorsk, vlPortuguese, vlSerboCroatian, vlCanadianFrench,
vlSwissFrench, vlUnknown);

TVersionCharSet = (vcsASCII, vcsJapan, vcsKorea, vcsTaiwan, vcsUnicode,
vcsEasternEuropean, vcsCyrillic, vcsMultilingual, vcsGreek, vcsTurkish,
vcsHebrew, vcsArabic, vcsUnknown);

{$IFNDEF WIN32}
PVSFixedFileInfo = Pvs_FixedFileInfo;
DWORD = Longint;
{$ENDIF}

TLongVersion = record
case Integer of
0: (All: array[1..4] of Word);
1: (MS, LS: LongInt);
end;

{ TVersionInfo }

TVersionInfo = class(TObject)
private
FFileName: PChar;
FValid: Boolean;
FSize: DWORD;
FBuffer: PChar;
FHandle: DWORD;
procedure ReadVersionInfo;
function GetFileName: string;
procedure SetFileName(const Value: string);
function GetTranslation: Pointer;
function GetFixedFileInfo: PVSFixedFileInfo;
function GetFileLongVersion: TLongVersion;
function GetProductLongVersion: TLongVersion;
function GetTranslationString: string;
function GetComments: string;
function GetCompanyName: string;
function GetFileDescription: string;
function GetFileVersion: string;
function GetVersionNum: Longint;
function GetInternalName: string;
function GetLegalCopyright: string;
function GetLegalTrademarks: string;
function GetOriginalFilename: string;
function GetProductVersion: string;
function GetProductName: string;
function GetSpecialBuild: string;
function GetPrivateBuild: string;
function GetVersionLanguage: TVersionLanguage;
function GetVersionCharSet: TVersionCharSet;
function GetVerFileDate: TDateTime;
public
constructor Create(const AFileName: string);
destructor Destroy; override;
function GetVerValue(const VerName: string): string;
property FileName: string read GetFileName write SetFileName;
property Valid: Boolean read FValid;
property FixedFileInfo: PVSFixedFileInfo read GetFixedFileInfo;
property FileLongVersion: TLongVersion read GetFileLongVersion;
property ProductLongVersion: TLongVersion read GetProductLongVersion;
property Translation: Pointer read GetTranslation;
property VersionLanguage: TVersionLanguage read GetVersionLanguage;
property VersionCharSet: TVersionCharSet read GetVersionCharSet;
property VersionNum: Longint read GetVersionNum;
property Comments: string read GetComments;
property CompanyName: string read GetCompanyName;
property FileDescription: string read GetFileDescription;
property FileVersion: string read GetFileVersion;
property InternalName: string read GetInternalName;
property LegalCopyright: string read GetLegalCopyright;
property LegalTrademarks: string read GetLegalTrademarks;
property OriginalFilename: string read GetOriginalFilename;
property ProductVersion: string read GetProductVersion;
property ProductName: string read GetProductName;
property SpecialBuild: string read GetSpecialBuild;
property PrivateBuild: string read GetPrivateBuild;
property Values[const Name: string]: string read GetVerValue;
property VerFileDate: TDateTime read GetVerFileDate;
end;

function LongVersionToString(const Version: TLongVersion): string;
function StringToLongVersion(const Str: string): TLongVersion;
function AppFileName: string;
function AppVerInfo: TVersionInfo;
function FileDateTime(const FileName: string): System.TDateTime;
{ Installation utility routine }

function OkToWriteModule(ModuleName: string; NewVer: Longint): Boolean;

implementation

{$IFDEF WIN32}
uses SysUtils;
{$ELSE}
uses WinTypes, WinProcs, SysUtils, FileUtil, DateUtil, VclUtils;
{$ENDIF}

function MemAlloc(Size: Longint): Pointer;
{$IFDEF WIN32}
begin
GetMem(Result, Size);
end;
{$ELSE}
var
Handle: THandle;
begin
if Size < 65535 then GetMem(Result, Size)
else begin
Handle := GlobalAlloc(HeapAllocFlags, Size);
Result := GlobalLock(Handle);
end;
end;
{$ENDIF WIN32}

const
LanguageValues: array[TVersionLanguage] of Word = ($0401, $0402, $0403,
$0404, $0405, $0406, $0407, $0408, $0409, $040A, $040B, $040C, $040D,
$040E, $040F, $0410, $0411, $0412, $0413, $0414, $0415, $0416, $0417,
$0418, $0419, $041A, $041B, $041C, $041D, $041E, $041F, $0420, $0421,
$0804, $0807, $0809, $080A, $080C, $0810, $0813, $0814, $0816, $081A,
$0C0C, $100C, $0000);

const
CharacterSetValues: array[TVersionCharSet] of Integer = (0, 932, 949, 950,
1200, 1250, 1251, 1252, 1253, 1254, 1255, 1256, -1);

{ TVersionInfo }

constructor TVersionInfo.Create(const AFileName: string);
begin
inherited Create;
FFileName := StrPCopy(StrAlloc(Length(AFileName) + 1), AFileName);
ReadVersionInfo;
end;

destructor TVersionInfo.Destroy;
begin
if FBuffer <> nil then FreeMem(FBuffer, FSize);
StrDispose(FFileName);
inherited Destroy;
end;

procedure TVersionInfo.ReadVersionInfo;
begin
FValid := False;
FSize := GetFileVersionInfoSize(FFileName, FHandle);
if FSize > 0 then
try
FBuffer := MemAlloc(FSize);
FValid := GetFileVersionInfo(FFileName, FHandle, FSize, FBuffer);
except
FValid := False;
raise;
end;
end;

function TVersionInfo.GetFileName: string;
begin
Result := StrPas(FFileName);
end;

procedure TVersionInfo.SetFileName(const Value: string);
begin
if FBuffer <> nil then FreeMem(FBuffer, FSize);
FBuffer := nil;
StrDispose(FFileName);
FFileName := StrPCopy(StrAlloc(Length(Value) + 1), Value);
ReadVersionInfo;
end;

function TVersionInfo.GetTranslation: Pointer;
var
{$IFDEF WIN32}
Len: UINT;
{$ELSE}
Len: Cardinal;
{$ENDIF}
begin
Result := nil;
if Valid then VerQueryValue(FBuffer, '\VarFileInfo\Translation', Result, Len)
else Result := nil;
end;

function TVersionInfo.GetTranslationString: string;
var
P: Pointer;
begin
Result := '';
P := GetTranslation;
if P <> nil then
Result := IntToHex(MakeLong(HiWord(Longint(P^)), LoWord(Longint(P^))), 8);
end;

function TVersionInfo.GetVersionLanguage: TVersionLanguage;
var
P: Pointer;
begin
P := GetTranslation;
for Result := vlArabic to vlUnknown do
if LoWord(Longint(P^)) = LanguageValues[Result] then Break;
end;

function TVersionInfo.GetVersionCharSet: TVersionCharSet;
var
P: Pointer;
begin
P := GetTranslation;
for Result := vcsASCII to vcsUnknown do
if HiWord(Longint(P^)) = CharacterSetValues[Result] then Break;
end;

function TVersionInfo.GetFixedFileInfo: PVSFixedFileInfo;
var
{$IFDEF WIN32}
Len: UINT;
{$ELSE}
Len: Cardinal;
{$ENDIF}
begin
Result := nil;
if Valid then VerQueryValue(FBuffer, '\', Pointer(Result), Len)
else Result := nil;
end;

function TVersionInfo.GetProductLongVersion: TLongVersion;
begin
Result.MS := FixedFileInfo^.dwProductVersionMS;
Result.LS := FixedFileInfo^.dwProductVersionLS;
end;

function TVersionInfo.GetFileLongVersion: TLongVersion;
begin
Result.MS := FixedFileInfo^.dwFileVersionMS;
Result.LS := FixedFileInfo^.dwFileVersionLS;
end;

function TVersionInfo.GetVersionNum: Longint;
begin
if Valid then Result := FixedFileInfo^.dwFileVersionMS
else Result := 0;
end;

function TVersionInfo.GetVerValue(const VerName: string): string;
var
szName: array[0..255] of Char;
Value: Pointer;
{$IFDEF WIN32}
Len: UINT;
{$ELSE}
Len: Cardinal;
{$ENDIF}
begin
Result := '';
if Valid then begin
StrPCopy(szName, '\StringFileInfo\' + GetTranslationString + '\' + VerName);
if VerQueryValue(FBuffer, szName, Value, Len) then
Result := StrPas(PChar(Value));
end;
end;

function TVersionInfo.GetComments: string;
begin
Result := GetVerValue('Comments');
end;

function TVersionInfo.GetCompanyName: string;
begin
Result := GetVerValue('CompanyName');
end;

function TVersionInfo.GetFileDescription: string;
begin
Result := GetVerValue('FileDescription');
end;

function TVersionInfo.GetFileVersion: string;
begin
Result := GetVerValue('FileVersion');
if (Result = '') and Valid then
Result := LongVersionToString(FileLongVersion);
end;

function TVersionInfo.GetInternalName: string;
begin
Result := GetVerValue('InternalName');
end;

function TVersionInfo.GetLegalCopyright: string;
begin
Result := GetVerValue('LegalCopyright');
end;

function TVersionInfo.GetLegalTrademarks: string;
begin
Result := GetVerValue('LegalTrademarks');
end;

function TVersionInfo.GetOriginalFilename: string;
begin
Result := GetVerValue('OriginalFilename');
end;

function TVersionInfo.GetProductVersion: string;
begin
Result := GetVerValue('ProductVersion');
if (Result = '') and Valid then
Result := LongVersionToString(ProductLongVersion);
end;

function TVersionInfo.GetProductName: string;
begin
Result := GetVerValue('ProductName');
end;

function TVersionInfo.GetSpecialBuild: string;
begin
Result := GetVerValue('SpecialBuild');
end;

function TVersionInfo.GetPrivateBuild: string;
begin
Result := GetVerValue('PrivateBuild');
end;

function FileDateTime(const FileName: string): System.TDateTime;
var
Age: Longint;
begin
Age := FileAge(FileName);
if Age = -1 then
Result := 0
else
Result := FileDateToDateTime(Age);
end;

function TVersionInfo.GetVerFileDate: TDateTime;
begin
if FileExists(FileName) then
Result := FileDateTime(FileName)
else Result := 0;
end;

{ Long version string routines }

function LongVersionToString(const Version: TLongVersion): string;
begin
with Version do
Result := Format('%d.%d.%d.%d', [All[2], All[1], All[4], All[3]]);
end;

function StringToLongVersion(const Str: string): TLongVersion;
var
Sep: Integer;
Tmp, Fragment: string;
I: Byte;
begin
Tmp := Str;
for I := 1 to 4 do begin
Sep := Pos('.', Tmp);
if Sep = 0 then Sep := Pos(',', Tmp);
if Sep = 0 then Fragment := Tmp
else begin
Fragment := Copy(Tmp, 1, Sep - 1);
Tmp := Copy(Tmp, Sep + 1, MaxInt);
end;
if Fragment = '' then Result.All[I] := 0
else Result.All[I] := StrToInt(Fragment);
end;
I := Result.All[1];
Result.All[1] := Result.All[2];
Result.All[2] := I;
I := Result.All[3];
Result.All[3] := Result.All[4];
Result.All[4] := I;
end;

function AppFileName: string;
var
FileName: array[0..255] of Char;
begin
if IsLibrary then begin
GetModuleFileName(HInstance, FileName, SizeOf(FileName) - 1);
Result := StrPas(FileName);
end
else Result := ParamStr(0);
end;

function AppVerInfo: TVersionInfo;
begin
Result := TVersionInfo.Create(AppFileName);
end;

{ Installation utility routines }

function OkToWriteModule(ModuleName: string; NewVer: Longint): Boolean;
{ Return True if it's ok to overwrite ModuleName with NewVer }
begin
{Assume we should overwrite}
OkToWriteModule := True;
with TVersionInfo.Create(ModuleName) do begin
try
if Valid then {Should we overwrite?}
OkToWriteModule := NewVer > VersionNum;
finally
Free;
end;
end;
end;

end.
Автор: dmit000
Дата сообщения: 11.09.2006 12:29
Составил структуру в редакторе TreeView. Она логически закончена и корректировки не подлежит (в том числе пользователями)
Структура имеет набор Item и Subitem

приведите пожалуйсто код для обработки события
OnClick на пунктах (Item) и подпунктах (Subitem)

Автор: ArtemiyUO
Дата сообщения: 11.09.2006 13:20
dmit000
А в чем проблема собственно? Определить что есть итем что сабитем?

Код:
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
if node.HasChildren then
caption := 'выбран сабитем'
else
caption := 'выбран итем';
end;
Автор: dmit000
Дата сообщения: 11.09.2006 13:40
ArtemiyUO
прочитай ещё раз мой вопрос.
Структура уже задана и меняться не будет. нужен код для обработки события ONclick на входящих в структуру пунктов и подпунктов
Автор: RomanTim
Дата сообщения: 11.09.2006 13:52
dmit000

Цитата:
прочитай ещё раз мой вопрос

А ты внимательно почитай описание события OnChange у TTreeView - человек правильно написал.
Если же так хочется самому обрабатывать мышь, то OnClick, GetItemAt
Автор: Sexton
Дата сообщения: 11.09.2006 13:53
dmit000, смотря что, собственно, обрабатывать нужно.
Автор: dmit000
Дата сообщения: 11.09.2006 14:07
ещё раз на новой странице:
Составил структуру в редакторе TreeView. Она логически закончена и корректировки не подлежит (в том числе пользователями)
Структура имеет набор Item и Subitem

приведите пожалуйсто код для обработки события
OnClick на пунктах (Item) и подпунктах (Subitem)

+

Структура:
Программа А
Программа Б
Программа Б1
Программа Б2

например при нажатии на пункте 'Программа А' - событие ONClick // form1.show;
на пункте 'Программа Б2' - событие ONClick // form2.show;

Вроде всё понятно написал
Вот мадератор меня за повторение убьёт.
Автор: RomanTim
Дата сообщения: 11.09.2006 15:23
dmit000
[more]
procedure TreeView1Click(Sender: TObject);
var
p: TPoint;
n: TTreeNode;
begin
p := (Sender as TTreeView).ScrrenToClient(Mouse.CursorPos);
n := (Sender as TTreeView).GetNodeAt(p.X, p.Y);
if n <> nil then begin
... // здесь делаешь то, что тебе надо
end;
end;[/more]
Только что ты будешь делать если пользователь по дереву будет клавиатурой бегать?

Автор: xitsmex
Дата сообщения: 11.09.2006 18:57
dmit000
Ура. А нельзя ли сразу было привести вопрос в удобоваримом виде? Все просто, как Node выделить уже сказали, а вот различать лучше, имхо, не по названию. У них же есть property Data
Автор: mauar
Дата сообщения: 11.09.2006 20:00
Как сделать на Delphi: при перетаскивание окна мышью, или нажатия мышью на окно заголовка програмы, окно становится прозрачным?

Автор: ShIvADeSt
Дата сообщения: 12.09.2006 00:37
mauar

Цитата:
Как сделать на Delphi: при перетаскивание окна мышью, или нажатия мышью на окно заголовка програмы, окно становится прозрачным?

Читать темы по фильтру прозрачное (transparent) окно и вставлять код в соотв события
Автор: mauar
Дата сообщения: 12.09.2006 01:16
как сделать форму прозрачной я заню, а как прописать события на перемещения или нажатия в окне заколовка левой кнопкой мыши, может подскажите коддинг?
Автор: RedPromo
Дата сообщения: 12.09.2006 01:19
mauar
Есть два пути первый это вот

Цитата:

procedure WMNCHITTEST(var Msg: TWMNCHitTest); message WM_NCHITTEST; //переопределяем

Сам листинг процедуры

Цитата:

inherited;
if (Msg.Result = HTCAPTION) then
begin
if GetAsyncKeyState(VK_LBUTTON)<0 then
begin
Self.AlphaBlendValue:=100;
Self.AlphaBlend:= True;
end
else
Self.AlphaBlend:= False;
end
else
Self.AlphaBlend:= False;


Второй путь это вот

Цитата:

procedure WMNCLButtonDown(var Message: TWMNCLButtonDown); message WM_NCLBUTTONDOWN; //переопределяем раз
procedure WMNCLButtonUp(var Message: TWMNCLButtonUp); message WM_NCLBUTTONUP;
//Переопределям два

Тут вроде все понятно.
Автор: mauar
Дата сообщения: 12.09.2006 02:48

Цитата:
[/q]
[q]Есть два пути первый это вот

Цитата:
procedure WMNCHITTEST(var Msg: TWMNCHitTest); message WM_NCHITTEST; //переопределяем


Сам листинг процедуры

Цитата:
inherited;
if (Msg.Result = HTCAPTION) then
begin
if GetAsyncKeyState(VK_LBUTTON)<0 then
begin
Self.AlphaBlendValue:=100;
Self.AlphaBlend:= True;
end
else
Self.AlphaBlend:= False;
end
else
Self.AlphaBlend:= False;



Второй путь это вот

Цитата:
procedure WMNCLButtonDown(var Message: TWMNCLButtonDown); message WM_NCLBUTTONDOWN; //переопределяем раз
procedure WMNCLButtonUp(var Message: TWMNCLButtonUp); message WM_NCLBUTTONUP;
//Переопределям два


Тут вроде все понятно.


Как вствить в пустую форму например. у меня чет не получется, сижу на Delphi 7
Автор: Sexton
Дата сообщения: 12.09.2006 06:01

Цитата:
dmit000 Подробнее...  Только что ты будешь делать если пользователь по дереву будет клавиатурой бегать?

Мне кажется, тогда удобнее использовать OnMouseUp (сообщает координаты мыши, делая позиционирование более точным, чем Mouse.CursorPos) и OnKeyUp, которые заодно сообщают и TShiftState, чтобы можно было обрабатывать разные варианты нажатий.
Автор: RomanTim
Дата сообщения: 12.09.2006 06:47
Sexton

Цитата:
Мне кажется, тогда удобнее использовать OnMouseUp (сообщает координаты мыши, делая позиционирование более точным, чем Mouse.CursorPos) и OnKeyUp, которые заодно сообщают и TShiftState, чтобы можно было обрабатывать разные варианты нажатий.

Ну на счет "более точными", это ты загнул - все-таки предобразование экранных координат в относительные для контрола вещь вполне однозначная
А мо MouseUp или MouseDown конечно тоже можно - все зависит от того как хочется чтобы это выглядело для пользователя
Автор: Sexton
Дата сообщения: 12.09.2006 07:13

Цитата:
Ну на счет "более точными", это ты загнул - все-таки предобразование экранных координат в относительные для контрола вещь вполне однозначная

Я к тому, что OnMouseDown (именно так, в предыдущем посте я ошибочно указал OnMouseUp) берет координаты непосредственно в момент нажатия. А если получать координаты в OnClick и OnMouseUp, то может произойти позиционирование не на ту ноду, которую хотел пользователь, а на соседнюю, так как мышь уже немного сдвинется, но визуально будет казаться, что программа ошибочно активировала не ту ноду. Вот какую точность я имею в виду.
Автор: GTA3
Дата сообщения: 12.09.2006 09:24
как сделать что бы в этой процедуре я мог сохранять файл с определенными именем

чтобы фал сохранялся так
00000001_день месяца.месяц.год

при этом
00000001_ -константа
день месяца.месяц.год --дата


if SaveDialog1.Execute then
memo1.Lines.SaveToFile(SaveDialog1......?
Автор: Sexton
Дата сообщения: 12.09.2006 09:34
if SaveDialog1.Execute then
memo1.Lines.SaveToFile('00000001_' + DateToStr(Date))
Автор: GTA3
Дата сообщения: 12.09.2006 09:55
Sexton
спасибо все получилось


Добавлено:
Sexton
у меня есть еще вопрос к этому делу еще надо добавить часы минуты секунды
но что бы без двоеточия в виндовсе оно не пропускается

я пробовал функцию
if SaveDialog1.Execute then
memo1.Lines.SaveToFile('00000001_' + TimeToStr(Time))

но так как эта функция сохраняет файл с двоеточием (к примеру 12:45:33)
виндовс выдает ошибку


Автор: Sexton
Дата сообщения: 12.09.2006 10:32
GTA3
if SaveDialog1.Execute then
memo1.Lines.SaveToFile('00000001_' + StringReplace(TimeToStr(Time), ':', '_', rfReplaceAll))
Автор: OdesitVadim
Дата сообщения: 12.09.2006 10:34
можно воспользоваться хорошой процедуркой DateTimeToString. Она позволяет сформировать то, что тебе надо.
где то так

Код:
var
s:string;
begin
....
if SaveDialog1.Execute then begin
DateTimeToString(s,'yymmdd-hhnnss',now)
memo1.Lines.SaveToFile('00000001_' +s);
end;

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Событие STFilter(DBGridEh) ???


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