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

Вниз

Как сделать Button1.Enabled:=true; в такой ситуации?   Найти похожие ветки 

 
Apocalepse ©   (2004-06-12 22:00) [0]

Привецтвую мастера. Вот тот код мне посоветовали чтобы мой текстовый редактор
мог открывать фалы если его поставить текстовым редактором по умолчанию.
procedure Tmain.FormCreate(Sender: TObject);
begin
if (ParamCount >= 1) and FileExists(ParamStr(1)) then
Text.Lines.LoadFromFile(ParamStr(1));
FName := (ParamStr(1));

Но теперь возникла новая проблема. У меня в редакторе кнопка "сохранить"
находиться в состоянии Disabled. В состояние Enabled она переходит лишь тогда,
когда открываеться файл через OpenDialog или сохраняеться через SaveDialog.
Так же мне понадобилось чтобы она переходила в Enabled-состояние после
того, как ей открыли файл как редактором по умолчанию т.е. с помощью кода
приведенного выше. Но как то сделать? Вот такая штука:
procedure Tmain.FormCreate(Sender: TObject);
begin
if (ParamCount >= 1) and FileExists(ParamStr(1)) then
Text.Lines.LoadFromFile(ParamStr(1));
FName := (ParamStr(1));
Button1.Enabled:=true;

Button1 - это кнопка "сохранить".
Подскажите плизз куда и как вписать кодButton1.Enabled:=true; в таком случае?


 
Pipa   (2004-06-12 22:41) [1]

В конструкторе:

if (ParamCount >= 1) and FileExists(ParamStr(1)) then begin
 Text.Lines.LoadFromFile(ParamStr(1));
 FName := (ParamStr(1));
 Button1.Enabled:=true;
end
else Button1.Enabled:=False;

После закрытия файла ставишь Button1.Enabled:=False;
Если открывается в OpenDialog то Button1.Enabled:=true;

Кстати, один совет. Если в файл не внесли изменения, то не нужно ставить кнопку в активное состояние (то есть всё вышесказанное не актуально).


 
Apocalepse ©   (2004-06-12 22:52) [2]

Это может не актуально, но зато работоспособно. Т.е. Если конечно не внесли изменений то и нажимать "сохранить" никто не будет, а вот если внесли а сохранить не могу, вот тога будет весело :-)


 
Apocalepse ©   (2004-06-12 22:54) [3]

Pipa, Вот ты пишиш "в конструкторе". Что то значит?


 
jack128 ©   (2004-06-12 23:00) [4]


> Вот ты пишиш "в конструкторе". Что то значит?

имелось ввиду в событии OnCreate формы, скорее всего. Хотя строго говоря "в конструкторе" - это немножко другое. Почитай, что такое классы, объекты..


 
KilkennyCat ©   (2004-06-12 23:06) [5]

В событии onChange пропиши показ кнопки.


 
Pipa   (2004-06-12 23:09) [6]

>Apocalepse ©  (12.06.04 22:54) [3]
>Pipa, Вот ты пишиш "в конструкторе". Что то значит?

Виноват, ошибся.
Конечно же я имел в виду FormCreate.


 
KilkennyCat ©   (2004-06-12 23:14) [7]

но и там желательно поставить флажок о первоначальной загрузке файла.

примерно так:

var
 FLoadNew : boolean;
 ...

после
Text.Lines.LoadFromFileнужно
FLag := false;

...

Text.onChange
begin
 ...
 ButtonSave.Enabled := FLag;
 FLag := true;
 ...
end;

Text.Save
begin
 ...
 flag := false;
 ...
end;
begin


 
KilkennyCat ©   (2004-06-12 23:16) [8]

ошибся, вот так:

Text.Save
begin
 ...
flag := false;
ButtonSave.Enabled := FLag;
...
end;


 
Apocalepse ©   (2004-06-12 23:16) [9]

KilkennyCat Ох точно! ГениальнО! Спасибо.
У меня тогда еще аопрос. У меня в SaveDialog не работает Filter
Я уж его и так и дак, и в хэлпе смотрел как правильно писать. Блин.... может чего подскажете? Как его правильно настроить.


 
KilkennyCat ©   (2004-06-12 23:20) [10]

напишите его здесь, а мы поправим...

А вообще, искренне советую установить RxLib. Там просто идеальный пример тестового редактора. Сам когда-то использовал как учебный материал.


 
Apocalepse ©   (2004-06-13 00:09) [11]

Что написать здесь? Весь код!!?? Или что... Я про фильтр то говорил, я его в редакторе фильтров делал, а что можно подругому?


 
KilkennyCat ©   (2004-06-13 01:01) [12]

можно и по другому:

savedialog1.Filter := "Текстовые|*.txt";


 
Apocalepse ©   (2004-06-13 10:44) [13]

Спасибо, сейчас попробую.


 
Apocalepse ©   (2004-06-13 10:59) [14]

Не работет. Если пишу ваш код
SaveDialog.Filter := "Текстовые|*.txt";
В самой процедуре сохранинея или просто в любом другом месте кода, филтр вообще
не появляется. А вот если настраиваю в редакторе фильтра, то в окне SaveDialog`a
фильтр то появляется. Но я вот дупксти написал все то же в нем

SaveDialog.Filter := "Текстовые|*.txt";

Вот выбираю я "текстовые" при сохранении и он конечно файл сохраняет, но без
разширения. Тоесть нужно самому в имени писать его. Например test.TXT
Вот так блин. Может где то что то надо в true поставить в ObjectInspector`e?


 
jack128 ©   (2004-06-13 11:13) [15]


> , но без
> разширения. Тоесть нужно самому в имени писать его. Например
> test.TXT


> Может где то что то надо в true поставить в ObjectInspector`e?
не true,  а прописать свойство defaultExt


 
KilkennyCat ©   (2004-06-13 11:16) [16]

нужно указать свойство

DefaultExt - *.txt


 
Gero ©   (2004-06-13 11:21) [17]


> нужно указать свойство
>
> DefaultExt - *.txt

DefaultExt := "txt";


 
KilkennyCat ©   (2004-06-13 12:11) [18]


> Gero ©   (13.06.04 11:21) [17]


равнозначно.


 
Apocalepse ©   (2004-06-13 12:12) [19]

И что тогда у меня только в тхт будет сохранять? Или тогда фильтр заработает? И где это
> DefaultExt := "txt";
надо написать? В Процедуре сохранения или в любом месте кода?


 
KilkennyCat ©   (2004-06-13 12:14) [20]

гм......... попробуйте и так и этак. И попробуйте перевести с английского DefaultExt...


 
KilkennyCat ©   (2004-06-13 12:16) [21]

Я ведь советовал посмотреть пример редактора в RxLib.
Если бы посмотрели - такие бы вопросы не задавали.


 
Gero ©   (2004-06-13 12:16) [22]


> Apocalepse ©   (13.06.04 12:12)

TOpenDialog.DefaultExt
Писать можно где угодоно, хоть в DesignTime.
Сохранять можно будет не только в txt, но если другое расширение не указано, то добавит к FileName еще и "txt".


 
Apocalepse ©   (2004-06-13 12:22) [23]

Но от этого заработает Фильтр или нет?
> Я ведь советовал посмотреть пример редактора в RxLib
А что такое RxLib.


> И попробуйте перевести с английского DefaultExt...

Default типа впрде по умолчанию а Ext - разширение или настройка.... Короче говоря это Разширение даваемое по умолчанию.


 
Apocalepse ©   (2004-06-13 12:25) [24]


> гм......... попробуйте

Можно на со мной ты :-) ато както неудобно даже :-)


 
Gero ©   (2004-06-13 12:35) [25]


> Но от этого заработает Фильтр или нет?

Фильтр только отвечает за отображение файлов в окошке выбора файла.
А что DefaultExt делает, я написал. Так что не понятно?


 
Apocalepse ©   (2004-06-13 14:11) [26]

Да все понятно щас все пашет уже как папа карло!



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

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

Наверх




Память: 0.53 MB
Время: 0.053 c
3-1086162787
inkotex
2004-06-02 11:53
2004.06.27
Подключение к базе через сеть


8-1081405567
*pavel
2004-04-08 10:26
2004.06.27
Заставить Delphi петь


1-1087305759
Maxim
2004-06-15 17:22
2004.06.27
DLL


8-1077738996
Opilki_Inside
2004-02-25 22:56
2004.06.27
Оверлеи


6-1083793149
CaveDweller
2004-05-06 01:39
2004.06.27
Проблемка с TClientSocket на windows 2000