1 (edited by RZ-007 2017-02-01 11:39:19)

Topic: Edit...

Дмитрий...
Как сделать...,чтоб CheckBox1 запоминал своё значение МЫ знаем...
(кому интересно...можно посмотреть в моих темах...)
Как мемо запоминает свои данные при выходе и входе в прогу:

if FileExists('text-1.txt') then Form1.Memo1.Lines.LoadFromFile('text-1.txt'); //  АДРЕСА
Form1.Memo1.Lines.SaveToFile('text-1.txt'); //  АДРЕСА

ВОПРОС:
А можно точно такое же, как с Memo1, только для Edit...???
(P.S. в Edit постоянно данные меняются...)

Re: Edit...

// загрузка
var
   sl: TStringList;
begin
   sl: TStringList.Create;
   if FileExists('text-1.txt') then 
   begin
      sl.LoadFromFile('text-1.txt'); //  АДРЕСА
      Form1.Edit1.Text := sl.text;
   end;
   sl.free;


//сохранение
var
   sl: TStringList;
begin
   sl: TStringList.Create;
   sl.Text := Form1.Edit1.Text;
   sl.SaveToFile('text-1.txt'); //  АДРЕСА
   sl.free;
Dmitry.

Re: Edit...

СПАСИБОЧКИ!!!!

Re: Edit...

RZ-007

Don't forget to close the second script with End; before sl.free;

JB

Re: Edit...

jean.brezhonek wrote:

RZ-007
Don't forget to close the second script with End; before sl.free;
JB

Да...Да конечно...!!!
СПАСИБО...!!!

Re: Edit...

Дмитрий доброго времени суток!!!
есть такой скрипт и он РАБОЧИЙ:

procedure Form7_OnShow (Sender: string; Action: string);
begin
       Timer := TTimer.Create(nil);
       Timer.Interval := 1000;     

       iTimer := 4;     //задаём время в сек...??????????????
       Timer.Enabled := True;     
       Timer.OnTimer := @OnTimer;  
end;

procedure OnTimer (Sender: TObject);
begin
    Form7.Label7.Caption := FormatDateTime('hh:nn:ss', iTimer/86400);
    Dec(iTimer);
    if iTimer < 0 then
    begin
        Timer.Enabled := False;
          end;
end;

Вопрос есть способ управлять  *** iTimer := 4;     //задаём время в сек...?????????????? ***
т.е в Edit1 втавили цифру и наш скрипт читает информацию из Edit1...???

Re: Edit...

Здравствуйте Дмитрий!!!
1.)

      Form13.Edit4.SelectAll; //выбираем все
      Form13.Edit4.CopyToClipboard; //копируем в буфер

А как из буфера вставить в  Form1.Edit.Text:= ????????
2.) Не могли бы Вы взглянуть пост № 6...

Re: Edit...

RZ-007 wrote:

Вопрос есть способ управлять  *** iTimer := 4;     //задаём время в сек...?????????????? ***
т.е в Edit1 втавили цифру и наш скрипт читает информацию из Edit1...???

iTimer := trunc(Form1.Edit1.Value);

trunc нужен, чтобы обрезать дробную часть, которая может присутствовать в Edit1

Dmitry.

Re: Edit...

Доброго времени суток!!!
У меня на форме 500-едитов...заполнены целыми числами от 1 до 50...!!!
Как по клику на битон...подсчитать сколько едитов заполненно например числом: 7 
и отобразить в лабер...???

Re: Edit...

RZ-007 wrote:

Доброго времени суток!!!
У меня на форме 500-едитов...заполнены целыми числами от 1 до 50...!!!
Как по клику на битон...подсчитать сколько едитов заполненно например числом: 7 
и отобразить в лабер...???

пример

// функция для подсчета
function CountValueEdits(Form: TAForm; Value: string): integer;
var
    i,c: integer;
begin
    result := 0;
    c := Form.ComponentCount-1;
    for i := 0 to c do
    begin
        if Form.Components[i] is TdbEdit then
            if TdbEdit(Form.Components[i]).Text = Value then Result := Result + 1;
    end;

end;

// как использовать
procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
    Form1.Label1.Caption := IntToStr( CountValueEdits(Form1, '7') );
end;
Dmitry.

Re: Edit...

Вау...ЭТО РАБОТАЕТ...спасибки...спасибки...спасибки...!!!
1.) Дмитрий..., возможно Ваш выше стоящий скрипт усовершенствовать...

RZ-007 пишет:
Доброго времени суток!!!
У меня на форме 500-едитов...заполнены целыми числами от 1 до 50...!!!
Как по клику на битон...подсчитать сколько едитов заполненно например числом: 7 
и отобразить в лабер...???

подсчитать сколько едитов заполненно например числом: 7  и отобразить в лабер
НО ПРИ УСЛОВИИ :
Конкретно перечислить в скрипте у каких имено едитов нужно производить расчёт...
В ИДЕАЛЕ БЫЛО БЫ: я хочу добавить несколько CheckBox, которые будут на форме 1
управлять едитоми...делать определённое количество едитов видемые или невидемые,
т.е.  делать расчёт у тех едитов, которы видны на форме 1...???
2.) У меня на форме 500-едитов...заполнены целыми числами от 1 до 50...!!!
собираюсь прописать такой скрипт:

procedure Form1_Edit1_OnChange (Sender: string);
begin
    if Form1.Edit1.Text ='0'   then Form1.Edit1.Color:= clLime;
    if Form1.Edit1.Text ='1'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='2'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='3'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='4'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='5'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='6'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='7'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='8'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='9'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='10'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='11'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='12'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='13'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='14'   then Form1.Edit1.Color:= clRed;;
    if Form1.Edit1.Text ='15'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='16'   then Form1.Edit1.Color:= clRed;;
    if Form1.Edit1.Text ='17'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='18'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='19'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='20'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='21'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='22'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='23'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='24'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='25'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='26'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='27'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='28'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='29'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='30'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='31'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='32'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='33'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='34'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='35'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='36'   then Form1.Edit1.Color:= clRed;
end;

Вопрос: я собираюсь прописывать этот скрипт для каждого едита...,
А ИХ ВСЕГО 500 шт.....Есть способ, как то упростить скрипт...???

Re: Edit...

RZ-007
Думаю тут явно какая то ошибка в принципах проектирования, лучше расскажите, какая цель всего этого? Возможно есть более правильный способ.

Dmitry.

13 (edited by RZ-007 2017-09-28 17:23:32)

Re: Edit...

Ок...есть сайты для игры в онлайн-рулетка...
Я пишу программку по збору выпавших чисел (от 0...до 36) для дальнейшей
статистики и аналитики с этими числами...
----------------------------------------------------------------------------------------------------------------
рисунок прилагается...
----------------------------------------------------------------------------------------------------------------

Думаю тут явно какая то ошибка в принципах проектирования, лучше расскажите, какая цель всего этого? Возможно есть более правильный способ.

если я в правельном направлении, тогда вопрос:
1.) так или иначе мне надо раскрасить едиты  ПОСТ №11 вопрос2...???
2.)  ПОСТ №11 вопрос1...???

Post's attachments

Attachment icon Скриншот 26-09-2017 202103.png 171.43 kb, 253 downloads since 2017-09-28 

Re: Edit...

К сожалению пока не ясно, нужно более подробное описание.
Что мешает просто вводить в базу с помощью одного компонента Edit числа в базу?

Dmitry.

Re: Edit...

DriveSoft wrote:

К сожалению пока не ясно, нужно более подробное описание.
Что мешает просто вводить в базу с помощью одного компонента Edit числа в базу?

Делов том, что числа всеровно надо отображать в едиты...Я думал о базе,...но пока справляюсь едитами...
ОК... и всё таки...ВОПРОС:
У меня на форме 500-едитов...заполнены целыми числами от 0 до 36...!!!
собираюсь прописать такой скрипт:

procedure Form1_Edit1_OnChange (Sender: string);
begin
    if Form1.Edit1.Text ='0'   then Form1.Edit1.Color:= clLime;
    if Form1.Edit1.Text ='1'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='2'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='3'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='4'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='5'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='6'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='7'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='8'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='9'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='10'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='11'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='12'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='13'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='14'   then Form1.Edit1.Color:= clRed;;
    if Form1.Edit1.Text ='15'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='16'   then Form1.Edit1.Color:= clRed;;
    if Form1.Edit1.Text ='17'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='18'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='19'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='20'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='21'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='22'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='23'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='24'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='25'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='26'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='27'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='28'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='29'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='30'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='31'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='32'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='33'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='34'   then Form1.Edit1.Color:= clRed;
    if Form1.Edit1.Text ='35'   then Form1.Edit1.Color:= clBlack;
    if Form1.Edit1.Text ='36'   then Form1.Edit1.Color:= clRed;
end;

я собираюсь прописывать этот скрипт для каждого едита...,
А ИХ ВСЕГО 500 шт.....Есть способ, как то упростить скрипт...???

Re: Edit...

Можно так

procedure Form1_OnShow (Sender: string; Action: string);
var
    i,c: integer;
begin
    // присваиваем всем текстовым компонентам на форме событие EditsOnChange
    c := Form1.ComponentCount-1;
    for i := 0 to c do
        if Form1.Components[i] is TdbEdit then TdbEdit(Form1.Components[i]).OnChange := @EditsOnChange;
end;

procedure EditsOnChange(Sender: TObject);
begin
    if TdbEdit(Sender).Text ='0'   then TdbEdit(Sender).Color:= clLime;
    if TdbEdit(Sender).Text ='1'   then TdbEdit(Sender).Color:= clRed;
    if TdbEdit(Sender).Text ='2'   then TdbEdit(Sender).Color:= clBlack;
    if TdbEdit(Sender).Text ='3'   then TdbEdit(Sender).Color:= clRed;
    if TdbEdit(Sender).Text ='4'   then TdbEdit(Sender).Color:= clBlack;
    if TdbEdit(Sender).Text ='5'   then TdbEdit(Sender).Color:= clRed;
    if TdbEdit(Sender).Text ='6'   then TdbEdit(Sender).Color:= clBlack;
    if TdbEdit(Sender).Text ='7'   then TdbEdit(Sender).Color:= clRed;
    if TdbEdit(Sender).Text ='8'   then TdbEdit(Sender).Color:= clBlack;
    if TdbEdit(Sender).Text ='9'   then TdbEdit(Sender).Color:= clRed;
    if TdbEdit(Sender).Text ='10'   then TdbEdit(Sender).Color:= clBlack;
    if TdbEdit(Sender).Text ='11'   then TdbEdit(Sender).Color:= clBlack;
    if TdbEdit(Sender).Text ='12'   then TdbEdit(Sender).Color:= clRed;
    if TdbEdit(Sender).Text ='13'   then TdbEdit(Sender).Color:= clBlack;
    if TdbEdit(Sender).Text ='14'   then TdbEdit(Sender).Color:= clRed;;
    if TdbEdit(Sender).Text ='15'   then TdbEdit(Sender).Color:= clBlack;
    if TdbEdit(Sender).Text ='16'   then TdbEdit(Sender).Color:= clRed;;
    if TdbEdit(Sender).Text ='17'   then TdbEdit(Sender).Color:= clBlack;
    if TdbEdit(Sender).Text ='18'   then TdbEdit(Sender).Color:= clRed;
    if TdbEdit(Sender).Text ='19'   then TdbEdit(Sender).Color:= clRed;
    if TdbEdit(Sender).Text ='20'   then TdbEdit(Sender).Color:= clBlack;
    if TdbEdit(Sender).Text ='21'   then TdbEdit(Sender).Color:= clRed;
    if TdbEdit(Sender).Text ='22'   then TdbEdit(Sender).Color:= clBlack;
    if TdbEdit(Sender).Text ='23'   then TdbEdit(Sender).Color:= clRed;
    if TdbEdit(Sender).Text ='24'   then TdbEdit(Sender).Color:= clBlack;
    if TdbEdit(Sender).Text ='25'   then TdbEdit(Sender).Color:= clRed;
    if TdbEdit(Sender).Text ='26'   then TdbEdit(Sender).Color:= clBlack;
    if TdbEdit(Sender).Text ='27'   then TdbEdit(Sender).Color:= clRed;
    if TdbEdit(Sender).Text ='28'   then TdbEdit(Sender).Color:= clBlack;
    if TdbEdit(Sender).Text ='29'   then TdbEdit(Sender).Color:= clBlack;
    if TdbEdit(Sender).Text ='30'   then TdbEdit(Sender).Color:= clRed;
    if TdbEdit(Sender).Text ='31'   then TdbEdit(Sender).Color:= clBlack;
    if TdbEdit(Sender).Text ='32'   then TdbEdit(Sender).Color:= clRed;
    if TdbEdit(Sender).Text ='33'   then TdbEdit(Sender).Color:= clBlack;
    if TdbEdit(Sender).Text ='34'   then TdbEdit(Sender).Color:= clRed;
    if TdbEdit(Sender).Text ='35'   then TdbEdit(Sender).Color:= clBlack;
    if TdbEdit(Sender).Text ='36'   then TdbEdit(Sender).Color:= clRed;
end;
Dmitry.

Re: Edit...

Благодарю...ЭТО РАБОТАЕТ...!!!