Главная страница
    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.046 c
2-1130596420
ruslan1
2005-10-29 18:33
2005.11.20
LPT порт


14-1130537892
LordOfRock
2005-10-29 02:18
2005.11.20
Вслед за Kaif oм :-)


14-1130237928
Empleado
2005-10-25 14:58
2005.11.20
FAQ для JAVA?


1-1130676546
Draught
2005-10-30 15:49
2005.11.20
Замена Memo на что либо более подходящее


14-1130439469
Alexander Martinov
2005-10-27 22:57
2005.11.20
Зацените, заглушку:) martinov.net.ru





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский