Меню

Почему не активно кнопка применить

Почему не активно кнопка применить

Во многих окнах настроек Винды есть кнопка «Применить», которая не активна, пока что-нибудь не изменишь.

Тоже самое хочу сделать в своей программе.
Не подскажете, есть ли способ получше.
Не прописывать же мне в каждом компоненте формы при его изменении «разблокировку»(enabled) этой клавиши.(тем более что таких форм много)
Заранее спасибо за ответ или ссылку.

> Не прописывать же мне в каждом компоненте формы при его
> изменении «разблокировку»(enabled) этой клавиши.(тем более
> что таких форм много)

Именно. Но никто не мешает тебе вынести разблокировку в отдельную процедуру, а обработчких для однотиптых элементов тоже сделать один.
Можно прицепить к кнопке Action и обрабатывать его OnUpdate, но сути дела это все равно не меняет.

2Gero: Спасибо.
>Но никто не мешает тебе вынести разблокировку в отдельную процедуру
Че ее выносить там 1 строчка enabled:=true;

>Можно прицепить к кнопке Action и обрабатывать его OnUpdate,
немного не до понял? можно пояснить?
и даст ли это хоть какое-то облегчение труда.

> Че ее выносить там 1 строчка enabled:=true;

Для универсальности правильнее было бы вынести.

> немного не до понял? можно пояснить?

С компонентом TActionList знаком?

> и даст ли это хоть какое-то облегчение труда.

В принципе, нет, но будет логичнее.

Действительно, для централизованного управления лучше использовать TActionList.
А чтобы свести к миниму рутину проверок и автоматизировать ее предлагаю такое решение.

Ну, первое. Необходимо для кнопки «Применить» завести отдельный Action в TActionList»е.

Далее используем такое юнит.

unit ChangeFinder;

interface
uses SysUtils, Classes, Controls, Forms, Contnrs;

IStateHolder = interface
[«<335B2FA7-678D-4B3B-976A-9D139590575B>«]
procedure SaveState (AComponent: TComponent; PropName: string);
function IsChanged: Boolean;
end;

function CreateStateHolder: IStateHolder;

type
TComponentState = class
private
FComponent: TComponent;
FPropertyName: string;
FValue: Variant;
public
constructor Create (AComponent: TComponent; APropertyName: string); reintroduce;
property Component: TComponent read FComponent;
property PropertyName: string read FPropertyName;
function Equal (Another: TComponentState): Boolean;
end;

TStateHolder = class (TInterfacedObject, IStateHolder)
private
FList: TObjectList;
public
constructor Create;
destructor Destroy; override;
procedure SaveState (AComponent: TComponent; PropName: string);
function IsChanged: Boolean;
end;

function CreateStateHolder: IStateHolder;
begin
Result := TStateHolder.Create
end;

function GetPropertyValue (Component: TComponent; PropertyName: string): Variant;
begin
if GetPropInfo(Component,PropertyName) = nil then
raise Exception.CreateFmt («Property %s not found»,[PropertyName]);

Result := GetPropValue (Component,PropertyName);
end;

constructor TStateHolder.Create;
begin
inherited Create();
FList := TComponentList.Create(True);
end;

destructor TStateHolder.Destroy;
begin
FList.Free;
inherited;
end;

function TStateHolder.IsChanged: Boolean;
var
I: Integer;
State1,
State2: TComponentState;
begin
Result := False;
for I := 0 to FList.Count — 1 do
begin
State1 := TComponentState(FList[I]);
State2 := TComponentState.Create(State1.Component,State1.PropertyName);
try
if not State1.Equal(State2) then
begin
Result := True;
Break
end
finally
State2.Free
end
end
end;

procedure TStateHolder.SaveState(AComponent: TComponent; PropName: string);
begin
FList.Add( TComponentState.Create(AComponent,PropName))
end;

constructor TComponentState.Create(AComponent: TComponent;
APropertyName: string);
begin
inherited Create();

FValue := GetPropertyValue(AComponent,APropertyName);
FComponent := AComponent;
FPropertyName := APropertyName;
end;

function TComponentState.Equal(Another: TComponentState): Boolean;
begin
Result := (FComponent=Another.FComponent) and
(FPropertyName=Another.FPropertyName) and
(FValue=Another.FValue);
end;

end.

Смысл этого прост: имеется некое хранилище состояний компонентов, которое может проверять изменилось ли это состояние у какого нибудь компонента. Под «состоянием» понимается значение указанного свойства.

Применять вот так.
В классе формы определяем
private
FStateHolder: IStateHolder;

В OnCreate формы, после установки значений по умолчанию для компонентов создаем экз. хранилища, а затем делаем «снимок» текущего состояния компонентов:
procedure TForm17.FormCreate(Sender: TObject);
begin
///
/// тут можем устанавливаем (или нет) значения свойств компонентов
///

// создаем экземпляр хранилища
FStateHolder := CreateStateHolder;

// сохраняем свойства компонентов
with FStateHolder do
begin
SaveState(Edit1,»Text»);
SaveState(Edit2,»Text»);
SaveState(CheckBox1,»Checked»);
SaveState(CheckBox2,»Checked»);
end;
end;

Далее, назначаем нашей кнопке созданный Action (пусть будет acApply) в дизайнере.
В событии OnUpdate нашего ActionList»а пишем:

procedure TForm17.ActionList1Update(Action: TBasicAction; var Handled: Boolean);
begin
// если что-то изменилось, то Enabled
acApply.Enabled :=
FStateHolder.IsChanged;
end;

Достоинства:
1. Автомат.
2. Кнопка Apply опять становиться неактивной, если свойство компонента вернуть в первоначальное состояние.

П.С. Написано «на колене», но вроде работает.

> with FStateHolder do
> begin
> SaveState(Edit1,»Text»);
> SaveState(Edit2,»Text»);
> SaveState(CheckBox1,»Checked»);
> SaveState(CheckBox2,»Checked»);
> end;

Только вот это вот неудобно, сам понимаешь, список может быть очень большим. Возможно, имеет смысл автоматически определять меняющееся свойство (для стандартных комоненетов), сделав параметр PropName default, и учитывать его значение только если он непустой, в противном случае брать стандартное для объекта значение.

Хотя списко компонентов все равно придется руками набивать. Тут можно разве что комопнент визуальным сделать и PropertyEditor хороший 🙂

> [6] Gero © (25.01.06 19:27)

Возможности для расширения — безграничны 🙂 Я просто идею предложил.


> Джо © (25.01.06 19:20) [4]

Фига себе двинул мысль 🙂 Надо поразмышлять над идейкой 🙂 Маладца 🙂


> Достоинства:


> 2. Кнопка Apply опять становиться неактивной, если
> свойство компонента вернуть в первоначальное состояние.

Этого не отнять, но, имхо, не критично, если этого и не произойдет

>SaveState(Edit1,»Text»);
> SaveState(Edit2,»Text»);
> SaveState(CheckBox1,»Checked»);
> SaveState(CheckBox2,»Checked»);

а не проще ли тогда, если все равно перечислять:
Edit1.OnChange:=UpdateBtnState;
Edit2.OnChange:=UpdateBtnState;
CheckBox1.OnClick:=UpdateBtnState;
CheckBox2.OnClick:=UpdateBtnState;
и все?


pasha_golub © ( 2006-01-25 20:03 ) [10]

TAction рулит безбожно. Сам только недавно понял всю прелесть.

[9] Гаврила © (25.01.06 20:02)
> Edit1.OnChange:=UpdateBtnState;
> Edit2.OnChange:=UpdateBtnState;
> CheckBox1.OnClick:=UpdateBtnState;
> CheckBox2.OnClick:=UpdateBtnState;

Еще нужно в UpdateBtnState»е написать код 🙂 Это раз.
В UpdateBtnState может быть другой код, причем, для некоторых компонентов — свой. Значит, код на изменения свойства нужно будет прописывать в каждый из OnChange. Это два 🙂
Кроме того, вот Gero неплохие идеи по расширению этого дела подкинул.
Если немного доработать, можно критически сократить формальную писанину.

Ну, и то, что мой вариант завязан на ActionList.OnUpdate, имхо, более универсально и стандартно.
🙂

Всем ОГРОМНОЕ спасибо.
Попозже еще поразбераюсь и поищу может что нибудь получится если наткнусь на простое решение обязательно сюда напишу.

Помню где-то был кусок кода, проходил по всем компонентам формы.

Кажется это даст решение: применить идею Джо + реализовать предложение Gero
>сделав параметр PropName default
+
>SaveState(Edit1,»Text»);
> SaveState(Edit2,»Text»);
> SaveState(CheckBox1,»Checked»);
> SaveState(CheckBox2,»Checked»);
автоматизировать с помощью ране упомянутого куска кода=нет геморою:)

Осталось откопать в закромах этот «кусок» 🙂

> [13] san#444 (25.01.06 20:52)
> Помню где-то был кусок кода, проходил по всем компонентам
> формы.

Там кода на 2 строки
for I := 0 to FormVariable.ComponetsCount-1 do
. := FormVariable.Components[I]

Кроме того, смотри пост [3] в ветке
http://delphimaster.net/view/1-1138040948/

Возможно, появятся дальнейшие идеи 🙂

В общем, вот вариант такой вариант для сокращения писанины.

В интерфейсе добавляем метод:
IStateHolder = interface
.
procedure SaveStatesFor (AForm: TForm; AComponentClass:
.
end;

И его реализацию:

TStateHolder = class (TInterfacedObject, IStateHolder)
.
procedure SaveStatesFor (Form: TForm; ComponentClass: TComponentClass;
PropName: string);
end;

procedure TStateHolder.SaveStatesFor(Form: TForm;
ComponentClass: TComponentClass; PropName: string);
var
I: Integer;
begin
for I := 0 to Form.ComponentCount-1 do
if Form.Components[I] is ComponentClass then
SaveState (Form.Components[I], PropName)
end;

Читайте также:  Почему все пророки были арабами


Использование выглядит совсем просто:

with FStateHolder do
begin
// запоминается состояние всех наследников TEdit на форме
SaveStatesFor(Self,TEdit,»Text»);
// запоминается состояние всех наследников TCheckBox на форме
SaveStatesFor(Self,TCheckBox,»Checked»);
end;

Тут есть маленькие нюансы, но, в принципе, можно пойти таким путем 🙂

Согласен хороший путь. В основном компоненты в которых что-то изменяется это Edit,Checkbox,Button,Combobox и несколько других самых распространенных, а остальные не лень и вручную написать.

Можно будет использовать для всех окон приложения в целом, так что круче могут быть только яйца:)

источник

Почему не активно кнопка применить

Здравствуйте.
Меняется, самостоятельно. без чьего либо вмешательства , дата и время.
Это уже происходит не в первый раз.
После того как установлю правильную дату и время, кнопка «применить» почему-то не активна, приходится обходиться только нажатиме на «ок».

Так же после сбоя даты и времени слетает и антивирус DR.Web.
До этого я его (антивирус) переустанвливал и все становилось на свои места и работало.
Сегодня же я никак не могу удалить антивирус.
Удалял с помощью unlocker, как в обычном так и в безопасном режиме.
Попытка откатить систему до рабочей даты — не удалась(

На данный момент антивирус не удаляется и не запускается.
Подскажите пожалуйста как решить проблему, а именно удалить антивирус.
Да к стати, антивирус лицензионный ,лицензия не просроченна.
(Windows 7 Ultimate 64-bit SP1)

В похожих темах обычно много интересных советов

Если версия антивируса выше 5.0, то возможно эти рецепты помогут (на свой страх и риск):

Инструкция по удалению Dr.Web

ШАГ 1:
Убедиться, что действительно деинсталлированы службы агента и апдейтера
Если ключи реестра:
HKLM\SYSTEM\CurrentControlSet\Services\drwagntd
HKLM\SYSTEM\CurrentControlSet\Services\drwupgrade
существуют, то удалить их.

Также можно посмотреть в
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
и если там есть ключ DrWebAgetnUI,то удалить его.

ШАГ 2:
Деинсталлировать SpIDerMail («spiderml.exe -remove»)

Если spiderml.exe физически отсутствует на диске, то это не
значит, что его раньше действительно деинсталлировали,
а не просто стерли.
В конце концов, можно специально принести spiderml.exe
на компьютер, чтобы запустить с ключом -remove
и точно убедиться, что деинсталляция выполнена.
Если он и в самом деле не был установлен, то такая попытка деинсталляции
просто закончится сообщением, что «SpIDer Mail is not installed»
(т.е. деинсталлировать нечего).

ШАГ 3:
Убедиться, что действительно деинсталлированы службы и драйверы
SpIDer Guard: выполнить spidernt.exe -remove

В ситуации, если он уже стерт, но нет уверенности что он был
корректно деинсталлирован из системы, то проверить ветки реестра:
Код:
HKLM\SYSTEM\CurrentControlSet\Services\drwebnet
HKLM\SYSTEM\CurrentControlSet\Services\SPIDER
HKLM\SYSTEM\CurrentControlSet\Services\spidernt
и если таковые существуют, то удалить их.

Также посмотреть
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
на предмет наличия ключа «SpIDerNT» (если такой есть, то удалить).

ШАГ 4:
Удалить всю ветку HKLM\SOFTWARE\IDAVLab
Если существует какой-либо из следующих ключей пакета DrWeb
(относящихся к разделу Установка/Удаление программ Windows):
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uni nstall\Dr.Web for Windows 95-XP
или
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uni nstall\Dr.Web
или
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uni nstall\DRWEB
или
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uni nstall\
то удалить его.

ШАГ 5:
Удалить ярлыки запуска Dr.Web с рабочего стола и из группы
«Пуск|Программы», если таковые есть.

ШАГ 6:
Удалить все содержимое каталога DrWeb или, сответственно,
«DrWeb Enterprise Suite» с диска (кое-что в нем, возможно,
удастся удалить только после рестарта).

источник

Почему не активно кнопка применить

Во многих окнах настроек Винды есть кнопка «Применить», которая не активна, пока что-нибудь не изменишь.

Тоже самое хочу сделать в своей программе.
Не подскажете, есть ли способ получше.
Не прописывать же мне в каждом компоненте формы при его изменении «разблокировку»(enabled) этой клавиши.(тем более что таких форм много)
Заранее спасибо за ответ или ссылку.

> Не прописывать же мне в каждом компоненте формы при его
> изменении «разблокировку»(enabled) этой клавиши.(тем более
> что таких форм много)

Именно. Но никто не мешает тебе вынести разблокировку в отдельную процедуру, а обработчких для однотиптых элементов тоже сделать один.
Можно прицепить к кнопке Action и обрабатывать его OnUpdate, но сути дела это все равно не меняет.

2Gero: Спасибо.
>Но никто не мешает тебе вынести разблокировку в отдельную процедуру
Че ее выносить там 1 строчка enabled:=true;

>Можно прицепить к кнопке Action и обрабатывать его OnUpdate,
немного не до понял? можно пояснить?
и даст ли это хоть какое-то облегчение труда.

> Че ее выносить там 1 строчка enabled:=true;

Для универсальности правильнее было бы вынести.

> немного не до понял? можно пояснить?

С компонентом TActionList знаком?

> и даст ли это хоть какое-то облегчение труда.

В принципе, нет, но будет логичнее.

Действительно, для централизованного управления лучше использовать TActionList.
А чтобы свести к миниму рутину проверок и автоматизировать ее предлагаю такое решение.

Ну, первое. Необходимо для кнопки «Применить» завести отдельный Action в TActionList»е.

Далее используем такое юнит.

unit ChangeFinder;

interface
uses SysUtils, Classes, Controls, Forms, Contnrs;

IStateHolder = interface
[«<335B2FA7-678D-4B3B-976A-9D139590575B>«]
procedure SaveState (AComponent: TComponent; PropName: string);
function IsChanged: Boolean;
end;

function CreateStateHolder: IStateHolder;

type
TComponentState = class
private
FComponent: TComponent;
FPropertyName: string;
FValue: Variant;
public
constructor Create (AComponent: TComponent; APropertyName: string); reintroduce;
property Component: TComponent read FComponent;
property PropertyName: string read FPropertyName;
function Equal (Another: TComponentState): Boolean;
end;

TStateHolder = class (TInterfacedObject, IStateHolder)
private
FList: TObjectList;
public
constructor Create;
destructor Destroy; override;
procedure SaveState (AComponent: TComponent; PropName: string);
function IsChanged: Boolean;
end;

function CreateStateHolder: IStateHolder;
begin
Result := TStateHolder.Create
end;

function GetPropertyValue (Component: TComponent; PropertyName: string): Variant;
begin
if GetPropInfo(Component,PropertyName) = nil then
raise Exception.CreateFmt («Property %s not found»,[PropertyName]);

Result := GetPropValue (Component,PropertyName);
end;

constructor TStateHolder.Create;
begin
inherited Create();
FList := TComponentList.Create(True);
end;

destructor TStateHolder.Destroy;
begin
FList.Free;
inherited;
end;

function TStateHolder.IsChanged: Boolean;
var
I: Integer;
State1,
State2: TComponentState;
begin
Result := False;
for I := 0 to FList.Count — 1 do
begin
State1 := TComponentState(FList[I]);
State2 := TComponentState.Create(State1.Component,State1.PropertyName);
try
if not State1.Equal(State2) then
begin
Result := True;
Break
end
finally
State2.Free
end
end
end;

procedure TStateHolder.SaveState(AComponent: TComponent; PropName: string);
begin
FList.Add( TComponentState.Create(AComponent,PropName))
end;

constructor TComponentState.Create(AComponent: TComponent;
APropertyName: string);
begin
inherited Create();

FValue := GetPropertyValue(AComponent,APropertyName);
FComponent := AComponent;
FPropertyName := APropertyName;
end;

function TComponentState.Equal(Another: TComponentState): Boolean;
begin
Result := (FComponent=Another.FComponent) and
(FPropertyName=Another.FPropertyName) and
(FValue=Another.FValue);
end;

end.

Смысл этого прост: имеется некое хранилище состояний компонентов, которое может проверять изменилось ли это состояние у какого нибудь компонента. Под «состоянием» понимается значение указанного свойства.

Применять вот так.
В классе формы определяем
private
FStateHolder: IStateHolder;

В OnCreate формы, после установки значений по умолчанию для компонентов создаем экз. хранилища, а затем делаем «снимок» текущего состояния компонентов:
procedure TForm17.FormCreate(Sender: TObject);
begin
///
/// тут можем устанавливаем (или нет) значения свойств компонентов
///

// создаем экземпляр хранилища
FStateHolder := CreateStateHolder;

// сохраняем свойства компонентов
with FStateHolder do
begin
SaveState(Edit1,»Text»);
SaveState(Edit2,»Text»);
SaveState(CheckBox1,»Checked»);
SaveState(CheckBox2,»Checked»);
end;
end;

Далее, назначаем нашей кнопке созданный Action (пусть будет acApply) в дизайнере.
В событии OnUpdate нашего ActionList»а пишем:

procedure TForm17.ActionList1Update(Action: TBasicAction; var Handled: Boolean);
begin
// если что-то изменилось, то Enabled
acApply.Enabled :=
FStateHolder.IsChanged;
end;

Достоинства:
1. Автомат.
2. Кнопка Apply опять становиться неактивной, если свойство компонента вернуть в первоначальное состояние.

П.С. Написано «на колене», но вроде работает.

> with FStateHolder do
> begin
> SaveState(Edit1,»Text»);
> SaveState(Edit2,»Text»);
> SaveState(CheckBox1,»Checked»);
> SaveState(CheckBox2,»Checked»);
> end;

Только вот это вот неудобно, сам понимаешь, список может быть очень большим. Возможно, имеет смысл автоматически определять меняющееся свойство (для стандартных комоненетов), сделав параметр PropName default, и учитывать его значение только если он непустой, в противном случае брать стандартное для объекта значение.

Хотя списко компонентов все равно придется руками набивать. Тут можно разве что комопнент визуальным сделать и PropertyEditor хороший 🙂

> [6] Gero © (25.01.06 19:27)

Возможности для расширения — безграничны 🙂 Я просто идею предложил.


> Джо © (25.01.06 19:20) [4]

Фига себе двинул мысль 🙂 Надо поразмышлять над идейкой 🙂 Маладца 🙂


> Достоинства:


> 2. Кнопка Apply опять становиться неактивной, если
> свойство компонента вернуть в первоначальное состояние.

Этого не отнять, но, имхо, не критично, если этого и не произойдет

>SaveState(Edit1,»Text»);
> SaveState(Edit2,»Text»);
> SaveState(CheckBox1,»Checked»);
> SaveState(CheckBox2,»Checked»);

а не проще ли тогда, если все равно перечислять:
Edit1.OnChange:=UpdateBtnState;
Edit2.OnChange:=UpdateBtnState;
CheckBox1.OnClick:=UpdateBtnState;
CheckBox2.OnClick:=UpdateBtnState;
и все?


pasha_golub © ( 2006-01-25 20:03 ) [10]

TAction рулит безбожно. Сам только недавно понял всю прелесть.

[9] Гаврила © (25.01.06 20:02)
> Edit1.OnChange:=UpdateBtnState;
> Edit2.OnChange:=UpdateBtnState;
> CheckBox1.OnClick:=UpdateBtnState;
> CheckBox2.OnClick:=UpdateBtnState;

Еще нужно в UpdateBtnState»е написать код 🙂 Это раз.
В UpdateBtnState может быть другой код, причем, для некоторых компонентов — свой. Значит, код на изменения свойства нужно будет прописывать в каждый из OnChange. Это два 🙂
Кроме того, вот Gero неплохие идеи по расширению этого дела подкинул.
Если немного доработать, можно критически сократить формальную писанину.

Ну, и то, что мой вариант завязан на ActionList.OnUpdate, имхо, более универсально и стандартно.
🙂

Всем ОГРОМНОЕ спасибо.
Попозже еще поразбераюсь и поищу может что нибудь получится если наткнусь на простое решение обязательно сюда напишу.

Помню где-то был кусок кода, проходил по всем компонентам формы.

Кажется это даст решение: применить идею Джо + реализовать предложение Gero
>сделав параметр PropName default
+
>SaveState(Edit1,»Text»);
> SaveState(Edit2,»Text»);
> SaveState(CheckBox1,»Checked»);
> SaveState(CheckBox2,»Checked»);
автоматизировать с помощью ране упомянутого куска кода=нет геморою:)

Осталось откопать в закромах этот «кусок» 🙂

> [13] san#444 (25.01.06 20:52)
> Помню где-то был кусок кода, проходил по всем компонентам
> формы.

Там кода на 2 строки
for I := 0 to FormVariable.ComponetsCount-1 do
. := FormVariable.Components[I]

Кроме того, смотри пост [3] в ветке
http://delphimaster.net/view/1-1138040948/

Возможно, появятся дальнейшие идеи 🙂

В общем, вот вариант такой вариант для сокращения писанины.

В интерфейсе добавляем метод:
IStateHolder = interface
.
procedure SaveStatesFor (AForm: TForm; AComponentClass:
.
end;

И его реализацию:

TStateHolder = class (TInterfacedObject, IStateHolder)
.
procedure SaveStatesFor (Form: TForm; ComponentClass: TComponentClass;
PropName: string);
end;

procedure TStateHolder.SaveStatesFor(Form: TForm;
ComponentClass: TComponentClass; PropName: string);
var
I: Integer;
begin
for I := 0 to Form.ComponentCount-1 do
if Form.Components[I] is ComponentClass then
SaveState (Form.Components[I], PropName)
end;


Использование выглядит совсем просто:

with FStateHolder do
begin
// запоминается состояние всех наследников TEdit на форме
SaveStatesFor(Self,TEdit,»Text»);
// запоминается состояние всех наследников TCheckBox на форме
SaveStatesFor(Self,TCheckBox,»Checked»);
end;

Тут есть маленькие нюансы, но, в принципе, можно пойти таким путем 🙂

Согласен хороший путь. В основном компоненты в которых что-то изменяется это Edit,Checkbox,Button,Combobox и несколько других самых распространенных, а остальные не лень и вручную написать.

Можно будет использовать для всех окон приложения в целом, так что круче могут быть только яйца:)

источник

Question: Q: Неактивна кнопка синхронизации

Устройство: iPhone 4S (iOS 6.1), iPAD1 (iOS 5.1.1)

ОС: Windows 7

iTunes: 11.0.0.163

Через некоторое время после установки iOS 6.1 у меня появилась проблема на iphoine. При соединении устройства с компьютером телефон не хочет синхронизироваться. Автоматическая синхронизация не идет, кнопка «синхронизации» неактивна.

Весь контент, который программа находит на телефоне идентифицируется как другое. Отмечу, что это не разросшаяся папка другое. Это именно неспособность программы определить типы контента. Данная папка размером ровно столько же, сколько занимает весь контент на устройстве. Если попытаться изменить что-то в настройках, например, поставить любую галочку, программа неожиданно начинает видеть типы контента. Но после нажатия кнопки «применить» все возвращается к началу.

Моя первая мысль была на itunes, поэтому он был обновлен до последней версии. Это не помогло. Далее google посоветовал сбросить устройство до заводских настроек. Это помогло! Устройство стало нормально видеть контент, кнопка синхронизация стала доступна. Удалось синхронизировать все без проблем. Но при следующем же присоединении устройства к компьютеру проблема вернулась. И возвращается постоянно.

Мне пришло в голову проверить состояние ipad, у него в точности та же проблема.

Резервные копии устройства тоже создавать не хотят. Кнопки активны, но нажатие их ни к чему не приводит. Скорее всего из-за ошибок в восприятии содержимого. Имена у обоих устройств есть. Ранее никаких проблем с синхронизацией не было.

Кстати, еще один косяк — при восстановлении до заводских настроек устройство тоже не может сделать резервную копию.

Состояние после присоединения к компьютеру

После установки галки на «синхронизировать только отмеченные песни и видео». Галка выбрана произвольно, можно менять любой параметр, эффект сохраняется.

Состояние после нажатия кнопки «применить»

Всплывающее меню, клик правой мыши по значку устройства при любых состояниях выглядит вот так:

источник

почему кнопка играть не активна

почему кнопка играть не активна

Когда я покупал элитные бойцы то там было написано что 14 ноября в 5:00 IRKT можно будет играть. В итоге я дождался этого дня и появилась кнопка «играть» но только вот она не активна (я не могу на нее нажать и как результат запустить игру). В чем причина? Подскажите.

Re: почему кнопка играть не активна

Тебе придет письмо о том, что игра, которую ты приобрел активирована, тогда сможешь зайти.

Re: почему кнопка играть не активна

Пришло оповещение и в origin и на почту, сообщили о том ,что товар доступен. Ситуация аналогичная

Re: почему кнопка играть не активна

Сообщения пришли и на почту, а так же уведомление в оригин тоже было, но ситуация та же.

Re: почему кнопка играть не активна

Re: почему кнопка играть не активна

))))) уже не раз сделано, а еще проверку файлов делал и на обновление, на всякий сл.

Re: почему кнопка играть не активна

перезапускал дважды и после твоего сообщения так же перезапустил. результат тот же.

Re: почему кнопка играть не активна

у меня все то же самое. Сидел ждал 00-00 а кнопка не активна уже и перезапустил и проверил игру .

Re: почему кнопка играть не активна

Лайфхак, пробную версию можно до сих пор запустить через магазин, но всё неимоверно глючит и она по-прежнему пробная. З.Ы. Не лайфхак, расходимся.

Re: почему кнопка играть не активна

Народ попробуйте запустить оригин на английском. У меня там кнопка стала активно но написали что нужно обновит драйвера, сейчас обновляю. А там видно будет запустится или нет.

Обезопасьте свою учетную запись

Мы убедимся, что это действительно вы, отправив вам код для доверенных устройств.

Не удается подключиться к игре?

Если вы испытываете проблемы при подключении к играм EA, выполните следующие действия.

источник

Почему не удается выделить элементы управления формы и элементы ActiveX?

Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).

Признаки

Выбор элемента управления, бывает сложно и непредсказуемые.

Причина

Может быть несколько причин:

Поскольку элемент управления формы может содержать текст или другие объекты (например, изображение), при попытке выберите элемент управления вы могут не весь элемент управления, если выделен не навести указатель мыши точно на границу элемента управления.

Если Excel не в режиме конструктора, при попытке выберите элемент управления ActiveX, вы можете случайно начать действие, например выполнение макроса или установка флажка.

Многие элементы управления расположены рядом друг с другом.

Разрешение

Во-первых определяют тип элемента управления, который требуется выделить. Существует три различных типа элементов управления и объекты, которые можно изменять однозначно, вы может не наверняка знаете, какой тип элемента управления — просто просмотрев его. Определение типа элемента управления, который вы работаете, щелкните правой кнопкой мыши элемент управления и затем Обратите внимание на следующее:

Если контекстное меню содержит команду Назначить макрос, это элемент управления формы.

Совет: Чтобы отобразить правильное контекстное меню для группы элемент управления формы, убедитесь, что выбран периметр группы, а не ее внутреннюю часть группы.

Если контекстное меню содержит команду Свойства, элемент управления является элементом ActiveX и Excel открывается в режиме конструктора.

Если контекстное меню содержит команду Назначить макрос, используется объект средства рисования.

Затем выполните следующее:

В элементе управления формы выберите элемент управления и убедитесь, что отображается границу элемента управления.

Для элемента управления ActiveX:

Если вкладка Разработчик недоступна, отобразите ее:

Откройте вкладку Файл и выберите пункт Параметры.

В раскрывающемся списке настроить ленту выберите Основные вкладки.

Установите флажок Разработчик.

Убедитесь в том, что Excel открывается в режиме конструктора. На вкладке Разработчик в группе элементы управления включите Режим конструктора.

При работе с большое количество элементов управления, расположенные рядом друг с другом, увеличить большего размера, чтобы увеличить изображение.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community, попросить помощи в сообществе Answers community, а также предложить новую функцию или улучшение на веб-сайте Excel User Voice.

источник

На телефоне Andro >

Сейчас мы с вами разберемся почему не активна кнопка «Установить» приложение или игру на вашем телефоне или планшете Андроид.

Данная статья подходит для всех брендов, выпускающих телефоны на Android 9/8/7/6: Samsung, HTC, Lenovo, LG, Sony, ZTE, Huawei, Meizu, Fly, Alcatel, Xiaomi, Nokia и прочие. Мы не несем ответственности за ваши действия.

Внимание! Вы можете задать свой вопрос специалисту в конце статьи.

Пользователи гаджетов Андроид сталкиваются с проблемой, когда при попытке скачать приложение кнопка «Установить» становится неактивной. Решить вопрос можно путем удаления проблемного софта с девайса или изменения яркости экрана.

Кликджекинг и список проблемных программ

Всем пользователям Андроид гаджетов известно, выполнять установку приложений можно не только из Гугл Плей. Доступны услуги альтернативных сервисов или ручная загрузка файла apk (читайте Как скачать apk-файл c Google Play).

Выполняется ручная инсталляция apk файла так:

p, blockquote 7,0,0,0,0 —>

  • Запускаем «Настройки», активируем разрешение на инсталляцию приложений из неизвестных источников.
  • Переходим к запуску apk файла. На экране отобразится запрос на его установку, жмем «Установить».

Какие действия тогда нужно предпринять, если данная кнопка становится неактивной? Первым делом следует разобраться в причинах, с чем связано отсутствие реакции гаджета, когда человек жмет на кнопку для инсталляции софта.

Причина проблемы кроется в таков виде мошенничества, как кликджекинг. Осуществляется подмена настоящего окна инсталляции фейковым. Человек думает, что выполняет установку программ, а в реальности жмем на кнопку, подготовленную злоумышленником.

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

Когда пользователь осуществляет запуск какого-либо софта с наличием overlay (окно имеет полупрозрачный или прозрачный интерфейс), выполняется блокировка значка «Установить». Отсюда следует, что любой софт с наличием опции overlay является причиной, из-за которой кнопка «Установить» становится неактивной.

Для разблокировки этой кнопки от пользователя требуется закрыть весь подобный софт. Перечень данных приложений многообразен, там имеется фирменный софт, программы сторонних разработчиков, экранные фильтры и даже системные службы. На скриншоте ниже указаны некоторые такие программы.

Чтобы значок «Установить» был активным, требуется данные программы временно удалить или осуществить их заморозку. Еще вариант – это отключить в них опции, которые влияют на изменение интерфейса экрана гаджета:

p, blockquote 16,0,0,0,0 —>

  • Размещение эффектов в виде индикаторов, кнопок.
  • Выполнение изменений уровня яркости, гаммы цветов.
  • Добавление поверх экрана различных элементов и т.п.

Приложения, отвечающие за яркость или экономию заряда аккумулятора

Подобная проблема может проявиться на девайсе Андроид во время инсталляции абсолютно любой программы вручную файлов apk.

Переходим в «Настройки», жмем «Приложения». Отобразится список, где нужно найти подходящий софт.

p, blockquote 20,0,0,0,0 —> p, blockquote 21,0,0,0,1 —>

Сначала жмем «Остановить», потом выбираем «Отключить». Возвращаемся к кнопке «Установить» — она будет активной.

источник