• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Помощь в коде Помощ

Статус
Закрыто для дальнейших ответов.
Olya Оффлайн

Olya

Homo habilis
Принятый Кодер
Регистрация
10 Май 2015
Сообщения
72
Баллы
60
У меня есть вот такая программа,по работе.



1.С помощью ей,я рассщитваю,как и что делать.
Но не удобно потом,после расчета,управлять.
То есть,к примеру мне нужно скопировать "возраст" растения.
Но не получается копировать одну ячейку.
Копируется вся ячейка.

2.Еще как в ListBox можно добавлять действия?
к примеру "Полить","Уход".
Так чтоб просто был к примеру кнопка "+".
При нажатие на "+" выходит меню с выбором действия,
при нажатие на действия выбранное добавляется в ListBox.
Как реализовать такую кнопку "+".
Или как добавлять запросы?
(Как просто,к примеру через Edit,добавлять в ListBox,я знаю.
Мне нужно,создать кнопку "+").

3.Работает программа также с моими почтами.
по протоколу IMAP.
Но в последнее время,стала работать программа как то с боями,
то есть ящики блокируются,или идет какая то капча,(Хотя какая там капча).
Как определять СПАМБЛОК и ОШИБКИ по протоколу IMAP?
Если такое возможно.

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

Надеюсь описала понятно,ну если не понятно будет.
Опишу подробней.

Помогите,а то как то не удобно работать
 
Olya Оффлайн

Olya

Homo habilis
Принятый Кодер
Регистрация
10 Май 2015
Сообщения
72
Баллы
60
Нет,просто отдельно кнопка "Буттон1"
При нажатие на нее появляется как бы всплывающие окно от кнопки,
А в нем все действия которые я выбирала,отдельно,и вписывала в sListBox1

по первому вопросу,как скопировать,можно отдельно например "возраст" растения,
вот так не совсем получается
Clipboard.AsText := Как тут прописать sListBox1,но так чтоб копировала каждую ячейку отдельно?;

Вож можно такое в sListBox1 нельзя организовать,тогда что может заменить sListBox1,но так чтоб сильно не отличалось?
Но желательно сделать все копирование с sListBox1.

Не знаю,описать стараюсь как можно подробней.
Если не понятно пишите,опишу и нарисую примерно как выглядеть кнопка должна.
 
Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,227
Баллы
155
Нет,просто отдельно кнопка "Буттон1"
При нажатие на нее появляется как бы всплывающие окно от кнопки,
А в нем все действия которые я выбирала,отдельно,и вписывала в sListBox1

по первому вопросу,как скопировать,можно отдельно например "возраст" растения,
вот так не совсем получается
Clipboard.AsText := Как тут прописать sListBox1,но так чтоб копировала каждую ячейку отдельно?;

Вож можно такое в sListBox1 нельзя организовать,тогда что может заменить sListBox1,но так чтоб сильно не отличалось?
Но желательно сделать все копирование с sListBox1.

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

Ну можно через ini запись чтение
 
Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,227
Баллы
155
Код:
if Form3.ComboBox1.Items.IndexOf(Edit1.Text) <> -1 then
    MessageDlg('Уже есть такая колонка!', mtError, [mbOk], 0)
  else
  begin
    Form3.ComboBox1.Items.Add(Edit1.Text)
  end;
  Close;
Код:
  ComboBox1.Items.BeginUpdate;
  ComboBox1.Items.Clear;
  if FileExists('pos.ini') then
  begin
    ComboBox1.Items.LoadFromFile('pos.ini');
    ComboBox1.Items.EndUpdate;
  end
Код:
ComboBox1.Items.SavetoFile('pos.ini');
 
Olya Оффлайн

Olya

Homo habilis
Принятый Кодер
Регистрация
10 Май 2015
Сообщения
72
Баллы
60
Не совсем поняла,но это не то.
Вот так примерно должно получится

Нажала на плюсик и мне выдает те значения которые я писала в настройках
В sListBox1,к примеру на форме 3 (Настройки программы).
А на форме 1 нажала плюсик мне выдало те значения что я писала на форме 3 это (Взять мешок,Удобрить,Полить растения,Посмотреть статистику)

А нажав на плюсик значение добавляются в sListBox1 на форме 1
 
Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,227
Баллы
155
Через PopupMenu попробуй
Код:
var
i:Integer;
begin
i:=ListBox1.ItemIndex;
ListBox1.Items.Delete(i);
Listbox1.Items.Insert(i,'Взять мешок');
end;
 
Olya Оффлайн

Olya

Homo habilis
Принятый Кодер
Регистрация
10 Май 2015
Сообщения
72
Баллы
60
Через PopupMenu пробовала,но мне нужно чтоб нажав на КНОПКУ +,появлялась рамочка,наподобие как у PopupMenu
Как я скриншот выше показала.
Нажав на кнопку вышло рамочка,а в ней мои действия которые я указала на другой форме в
ListBox1.
 
Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,227
Баллы
155
Через PopupMenu пробовала,но мне нужно чтоб нажав на КНОПКУ +,появлялась рамочка,наподобие как у PopupMenu
Как я скриншот выше показала.
Нажав на кнопку вышло рамочка,а в ней мои действия которые я указала на другой форме в
ListBox1.
а как на счёт Label и в писать Caption + и через PopupMenu
 
Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,227
Баллы
155
 
Olya Оффлайн

Olya

Homo habilis
Принятый Кодер
Регистрация
10 Май 2015
Сообщения
72
Баллы
60
Попробовать можно.
Это,то есть введенные действия будут писаться в Label.Caption ?
С кнопкой все таки удобней,а то так плюс даже не видать,и не выделяется,как кнопка.
Вот нашла похожее строение в программе
Называется
All-in-one checker
Там где написано "Искать в письмах" стоит кнопка.
Вот так примерно мне нужно,только там похоже запросы на поиск добавляются,а у меня нужно действия,ну принцип похож
Вот можете скачать посмотреть

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

 
Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,227
Баллы
155
Попробовать можно.
Это,то есть введенные действия будут писаться в Label.Caption ?
С кнопкой все таки удобней,а то так плюс даже не видать,и не выделяется,как кнопка.
Вот нашла похожее строение в программе
Называется
All-in-one checker
Там где написано "Искать в письмах" стоит кнопка.
Вот так примерно мне нужно,только там похоже запросы на поиск добавляются,а у меня нужно действия,ну принцип похож
Вот можете скачать посмотреть

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

Так это и есть кнопка с выводом PopupMenu
 
Olya Оффлайн

Olya

Homo habilis
Принятый Кодер
Регистрация
10 Май 2015
Сообщения
72
Баллы
60
Я в таких программах сильно,не разбираюсь.
Потому что там алгоритм заключается в другом.
Попросила знакомого,помочь он показал программу,говорит то же что через PopupMenu.
Да я и сама знаю,но не пойму сам алгоритм построения.

Добавим мы кнопку,создадим события клика.
А что тут писать не могу догадаться.
 
Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,481
Баллы
155
Можно пример?
Или наброски кода,чтоб легче было реализовать.
Первый пример
Код:
Новый элемент верхнего уровня:


procedure tform1.addmainitem(s: string);
var
  newitem: Tmenuitem;
begin
  newitem := tmenuitem.create(Mainmenu1);
  newitem.caption := s;
  {если вы хотите определить событие onclick
  newitem.onclick:=Dynamenuclick; }
  {добавляем это к верхнему уровню меню}
  mainmenu1.items.insert(mainmenu1.items.count, newitem);
  removemenu1.enabled := true;
  addmenuitem1.enabled := true;
end;

Создание подменю:


procedure tform1.addsubitem(s: string; to : integer);
var
  newitem, toitem: Tmenuitem;
begin
  {to = верхний уровень меню для нового пункта}
  toitem := mainmenu1.items[to ];
  newitem := tmenuitem.create(toitem);
  newitem.caption := s;
  {если вы хотите определить событие onclick
  newitem.onclick:=Dynamenuclick; }
  toitem.onclick := nil;
  toitem.insert(toitem.count, newitem);
  removemenuitem1.enabled := true;
end;
Второй пример
procedure TForm1.PopupMenu2Popup(Sender: TObject);
var
mi, msub: TmenuItem;
begin
with
(Sender as TPopupMenu) do
begin

// Удаляем все пункты меню

// while Items.Count > 0 do Items.delete(0);// Предыдущий код имел утечку памяти. Коррекция от Andrew Stewart (astewart@Strobes.co.nz)
while Items.Count > 0 do
Items[0].Free;

// Создаем обычный пункт "Первый"
mi := TMenuItem.Create(self);
with mi do
begin

Caption := 'Первый';
OnClick := MyClick;
end;
Items.Insert(0, mi);

// Создаем подменю "Подменю" c двумя пунктами "Подменю1" и// "Подменю2"
mi := TMenuItem.Create(self);
with mi do
begin

Caption := 'Подменю';
msub := TMenuItem.Create(self);
with msub do
begin

Caption := 'Подменю1';
OnClick := MyClick;
end;
Insert(0, msub);

msub := TMenuItem.Create(self);
with msub do
begin

Caption := 'Подменю2';
OnClick := MyClick;
end;
Insert(1, msub);
end;
Items.Insert(1, mi);
end;
end;

procedure TForm1.MyClick(Sender: TObject);
begin
beep;
end;

Создание и настройка меню с помощью Конструктора меню выполняются при создании приложения. Кроме того, меню можно создавать или изменять динамически непосредственно при выполнении приложения. Например, возможно:

  • создать новое меню любого типа или удалить его;
  • заблокировать или разблокировать отдельные пункты;
  • сделать пункт меню видимым или невидимым;
  • добавить или удалить пункт меню;
  • изменить название пункта;
  • установить или убрать отметку пункта;
  • изменить главное меню формы на другое;
  • соединить два меню.
Эти возможности обеспечиваются установкой свойствам пунктов меню требуемых значений и вызовом соответствующих методов.






Методы Add и Insert — добавление пунктов меню

Для добавления пунктов меню используются методы Add и Insert, для удаления пунктов меню используется метод Delete.

Процедура Add(Item: TMenuItem) добавляет определяемый параметром Item элемент вконец подменю, которое вызвало этот метод. Если подменю не существовало, то оно создается.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


  1. procedure Form1.mnuItemAddClick(Sender: TSender);
  2. var NewItem: TMenuItem;
  3. begin
  4. NewItem := TMenuItem.Create(Self);
  5. NewItem.Caption := 'Новый элемент1';
  6. mnuFile.Add(NewItem);
  7. end;
В этом примере новый пункт добавляется в конец подменю Файл. Добавляемый пункт имеет заголовок «Новый элемент». Предварительно новый пункт создается конструктором Create.

Процедура Insert(Index: Integer; Item: TMenuItem), в отличие от предыдущего метода, добавляет новый пункт меню в указанное положение. Параметр index определяет позицию в массиве элементов меню, в которую вставляется новый пункт. Если значение параметра index выходит за пределы допустимого диапазона, например, больше, чем число элементов подменю модифицируемого пункта меню, то возникает исключение.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


  1. procedure Form1.mnuItemInsertClick (Sender: TSender);
  2. var NewItem: TMenuItem;
  3. begin
  4. NewItem := TMenuItem.Create(Self);
  5. NewItem.Caption := 'Второй элемент';
  6. mnuFile.Insert(2, NewItem);
  7. end;
Процедура добавляет новый пункт меню в подменю Файл. Новый пункт имеет заголовок «Второй элемент» и добавляется во вторую позицию (отсчет начинается с нуля).

Процедура Delete (index: integer) удаляет указанный пункт меню. Если удаляемый пункт имеет подменю, то оно также удаляется.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


  1. procedure Form1.mnuItemDeleteClick(Sender: TSender);
  2. begin
  3. if mnuFile.Items[2].Caption = 'Второй элемент' then mnuFile.Delete(2);
  4. end;
Процедура удаляет пункт меню Файл. Удаляемый пункт имеет заголовок Второй элемент и находится на второй позиции. Предварительно производится проверка, действительно ли удаляется пункт с нужным названием.

Форма может иметь больше одного главного меню. Это используется, например, в случае, когда одно из них содержит заголовки на английском языке, а другое — на русском. Для реализации такой возможности в форму следует поместить два компонента MainMenu и подготовить соответствующие меню. После этого при выполнении программы можно подключить к форме любое из этих меню. Для подключения к форме главного меню используется свойство Menu формы.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


  1. if Form1.Menu = EnglishMenu then Form1.Menu := RussianMenu else Form1.Menu := EnglishMenu;
Меню имеют имена EnglishMenu и RussianMenu. Код, выполняющий переключение меню, можно включить в соответствующий обработчик.

Напомним, что Menu является одним из свойств формы, указывающим на главное меню, которое в настоящий момент является активным.

При организации приложений, содержащих несколько взаимосвязанных форм, может возникнуть необходимость соединения (слияния) меню различных форм. Обычно это нужно для меню MainMenu главной и подчиненной форм. Для многодокументных приложений соединение меню главной и дочерней формы выполняется автоматически при создании дочерней формы. В однодокументном приложении соединение меню выполняется программно.

Метод Merge - соединения двух строчных меню
Для соединения двух строчных меню служит метод Merge. Процедура Merge (Menu: TMainMenu) соединяет меню, заданное параметром Menu, с меню, вызвавшим этот метод. Соединение меню выполняется на уровне пунктов меню, расположенных непосредственно в строке меню. Например, если первое и второе меню выглядят как File Help и File Edit View соответственно, то результирующее (полученное после соединения) меню будет представлять собой строку вида: File Edit View Help.

Свойство AutoMerge - автоматическое соединение меню
Соединение меню можно выполнить автоматически при создании форм, установив свойство AutoMerge типа Boolean в значение True для подчиненных (вторичных, или дочерних) форм. Для главной формы приложения свойство AutoMerge должно быть установлено в значение False. Поскольку в многодокументном приложении соединение выполняется автоматически, свойство AutoMerge меню всех форм должно иметь значение False.

Cвойства GroupIndex - определяет порядок пунктов меню при соединении
Порядок следования пунктов меню при соединении определяется значениями свойства GroupIndex типа Byte отдельных пунктов обоих меню. Если значения свойства GroupIndex для обоих пунктов меню равны, то пункт второго меню заменяет пункт первого меню, для которого был вызван метод Merge. Если эти значения не равны, то в объединенном меню пункт с меньшим значением размещается слева от пункта с большим значением. По умолчанию свойство GroupIndex имеет нулевое значение для всех пунктов меню.

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

Метод unMerge — разъединение соединенных меню
Для разъединения соединенных меню используется метод unMerge. Процедура unMerge (Menu: TMainMenu) разъединяет два меню, соединенных с помощью метода Merge. Параметр Menu указывает меню, которое было соединено с главным меню и которое необходимо отсоединить.
 
Статус
Закрыто для дальнейших ответов.
Вверх Снизу