Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.031 c
5-1110285566
GuAV
2005-03-08 15:39
2005.11.20
procedure TCustomImageList.DefineProperties(Filer: TFiler);


14-1130221641
КаПиБаРа
2005-10-25 10:27
2005.11.20
Навыки Успеха для тех, кому от 16 до 30 лет


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


14-1130254944
hi
2005-10-25 19:42
2005.11.20
Существует ли женский заговор?


3-1128578227
jiny
2005-10-06 09:57
2005.11.20
Пробл. с объединением 4 таблиц





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский