Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.20;
Скачать: CL | DM;

Вниз

"..." в пути к файлу   Найти похожие ветки 

 
BobbyDigital   (2005-10-26 18:05) [0]

Извините за часто задаваемый вопрос, но все же.
У меня на форме показыватся путь к открываемому файлу, вот и если путь оказывается слишком длинным как корректно поставить троеточие в пути.
Например:
C:\Program Files\Adobe\...\Utilities\ScriptListener.8li


 
Lexer ©   (2005-10-26 18:08) [1]

По какому принципу будешь ставить многоточие?
А что еcли этот путь выглядит:
С:\Program Files\AdobeUtilitiesScriptListener_2005_forAdmin\ScriptListener.8li


 
Loginov Dmitry ©   (2005-10-26 18:24) [2]

Пример:

Label1.Caption := MinimizeName("С:\Program Files\AdobeUtilitiesScriptListener_2005_forAdmin\ScriptListener.8li", Label1.Canvas, 250)


 
MBo ©   (2005-10-26 18:41) [3]

DrawText c флагом DT_PATH_ELLIPSIS


 
bobbyDigital   (2005-10-27 00:55) [4]

Loginov Dmitry спасибо


 
bobbyDigital   (2005-10-27 00:55) [5]

Loginov Dmitry спасибо


 
Kolan ©   (2005-10-27 01:07) [6]

Вот несколько примеров: (На форме несколько кнопок и несколько едитов. Может что лишнее скинул)

procedure TForm1.BitBtn1Click(Sender: TObject);
var
 S, S1: string;
 Buffer: array[0..255] of Char;
begin
 S := Application.ExeName;
 S1 := "";
 GetShortPathName(PChar(S), Buffer, SizeOf(Buffer) - 1);
 S1 := StrPas(Buffer);
 Edit1.Text := S1;
 Edit2.Text := S;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);

var
P: PChar;
R: TRect;
S: string;
begin
S := Application.ExeName;
P := AllocMem(Length(S) + 1);
StrCopy(P, PChar(s));
//SetRect(R, 10, 10, 100, 25);
R := Edit3.ClientRect;
DrawText(Canvas.Handle, P, Length(s), R,
  DT_SINGLELINE or DT_CALCRECT or DT_LEFT or DT_MODIFYSTRING or DT_PATH_ELLIPSIS);
Edit3.Text := P;
FreeMem(P);
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
 Edit4.Text := ExtractRelativePath(Application.ExeName, ExtractFileDir(ExtractFileDir(Application.ExeName)))
end;

function TForm1.GetDotShortFilePath(FilePath: string): string;
var
 DelimetersCount, SecondDelimeter: Integer;
 I: Integer;
begin
 DelimetersCount := 0;
 SecondDelimeter := 0;
 for I := 1 to Length(FilePath) do
 begin
   if FilePath[I] = "\" then
     DelimetersCount := DelimetersCount + 1;

   if (DelimetersCount = 2) and (SecondDelimeter = 0) then
     SecondDelimeter := I;

   if DelimetersCount >= 3 then
     Break;
 end;

 if DelimetersCount >= 3 then
 begin
   Result := Copy(FilePath, 1, SecondDelimeter) + "..\" + ExtractFileName(FilePath);
 end
 else
   Result := FilePath;
end;

procedure TForm1.BitBtn4Click(Sender: TObject);
begin
 //Edit5.Text := GetDotShortFilePath(Application.ExeName);
 Edit5.Text := GetDotShortFilePath(Edit2.Text);
end;

function TForm1.AdjustStringToRect(S: string; Rect: TRect): string;
var                                
P: PChar;
begin
P := AllocMem(Length(S) + 1);
StrCopy(P, PChar(S));
Rect.BottomRight.X := Rect.BottomRight.X - 2;
DrawText(Canvas.Handle, P, Length(s), Rect,
  DT_SINGLELINE or DT_CALCRECT or DT_LEFT or DT_MODIFYSTRING or DT_PATH_ELLIPSIS);
Result := P;
FreeMem(P);
end;

procedure TForm1.BitBtn5Click(Sender: TObject);
begin
 Edit6.Text := AdjustStringToRect(Application.ExeName, Edit6.ClientRect);
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
 Edit6.Width := TrackBar1.Position;
 Edit6.Text := AdjustStringToRect(Application.ExeName, Edit6.ClientRect);
end;



Страницы: 1 вся ветка

Текущий архив: 2005.11.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.049 c
6-1123024539
DVladimir
2005-08-03 03:15
2005.11.20
Проблема с idHTTP


8-1120220228
Radgar
2005-07-01 16:17
2005.11.20
Заливка (Ведро)


2-1131204041
Zed
2005-11-05 18:20
2005.11.20
Процессы


2-1129800073
Ильичев С.А.
2005-10-20 13:21
2005.11.20
asm


14-1130485309
Juice
2005-10-28 11:41
2005.11.20
Посоветуйте книгу по Delphi 2005