Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2011, 23:12   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию как сделать окно "Совет дня.."

Всем привет!

Во многих программах, при запуске, видел такую вещь.
Выскакивает окно "Совет дня.."
И кнопки "Ещё.." и "Отмена" галочка "Не показывать больше".

Как такое реализовать?
Чтобы можно было при нажати "Ещё" выдавать строку наугад из файла.
Человек_Борща вне форума Ответить с цитированием
Старый 07.01.2011, 23:16   #2
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Цитата:
Сообщений: 509
Репутация: 47
И никаких соображений по сабжу?

Создать форму с кнопочками и делать Show при старте...
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 07.01.2011, 23:35   #3
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

понадобица ini, что б сохранят переменую типа Boolean, показыват ли при старте такое сообшение
если показыват то
Цитата:
Создать форму с кнопочками и делать Show при старте...
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 07.01.2011, 23:43   #4
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Цитата:
Чтобы можно было при нажати "Ещё" выдавать строку наугад из файла.
Вот процедурку организовал для перемешивания строк в Стринг листе.

Код:
procedure Rando(rand:TStringList);
var Arr: array [1..105] of Byte;  //104 это кол-во строк в файле
    b: Byte;
begin
  for i := 0 to 104 do
    Arr[i] := i;
  Randomize;
  for i := 0 to 103 do
  begin
    j := 104 - Random (105-i);
    b := Arr[i];
    Arr[i] := Arr[j];
    Arr[j] := b;
  end;
  rand.Clear;
  for i := 0 to 104 do
  rand.Add (IntToStr (Arr[i]));
end;
Вызывать примерно так:
Код:
var listik:Tstringlist;
     sovet:Tlabel;
ОнКриэйт:
Код:
begin
  listik:=Tstringlist.create;
  listik.loadfromfile('путь');
  rando(listik);
  sovet:=listik[0]; 
end;
На "Еще" вешаешь
Код:
sovet:=listik[1];
и тд...цикл оформить чтоб не мучаться.
А как сказал Valio, просто создавай формы(я бы по такому случаю делал им бы им bsnone, и повесил бы на форму в MouseDown:
Код:
  ReleaseCapture;
  Perform(WM_SYSCOMMAND, $F012, 0);
И крестик для закрытия в углу.
Ненавижу быть как все, но люблю, чтобы все были как я.

Последний раз редактировалось MyLastHit; 07.01.2011 в 23:47.
MyLastHit вне форума Ответить с цитированием
Старый 08.01.2011, 00:13   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Цитата:
Сообщение от Valio Посмотреть сообщение
И никаких соображений по сабжу?

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

MyLastHit благодарен, сейчас соображу как это и чем это делать=)
Человек_Борща вне форума Ответить с цитированием
Старый 08.01.2011, 00:18   #6
Alex Defsen
Пользователь
 
Регистрация: 10.10.2010
Сообщений: 15
По умолчанию

Код:
Randomize();
Memo1.Text := S[Random(S.Count-1)];
Это на OnShow окна "Совет дня".
Memo1 - то, где будет сам совет.
S - список строк с советами. Одна строка = один совет.
При нажатии на кнопку дальше - аналогичный код.
Alex Defsen вне форума Ответить с цитированием
Старый 08.01.2011, 00:44   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Alex Defsen, дополню лишь одно, Randomize достаточно поставить в OnCreate основной формы(а то и в начало dpr)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.01.2011, 00:45   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Благодарен, всем отписавшимся, кажется поняль что да как...
Человек_Борща вне форума Ответить с цитированием
Старый 08.01.2011, 01:10   #9
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Alex Defsen, по твоему алгоритму возможны повторы неприятные есть % вероятности, что человек будет наблюдать 2, а то и 3 одинаковых совета подряд.
Ненавижу быть как все, но люблю, чтобы все были как я.

Последний раз редактировалось MyLastHit; 08.01.2011 в 01:20.
MyLastHit вне форума Ответить с цитированием
Старый 08.01.2011, 03:00   #10
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

хм вариант Alex Defsen'а подошёл лучше. Если не хотеть повторов значит надо писать больше советов.

Вот что у меня получилось. Приаттачил архив, компилированный+сырец=)


А вот допустим если используется доп. компонент преводчик, то как быть?
Вот у меня с этим трабл, я использую BalmSoft Polyglot 1.7 транслятор(Жадб разработка прекратилась), как мне скристить сабж темы с этим транслятором? Чтобы все Tips хранились там же где и все строки выниманиемы транслятором?
Вложения
Тип файла: zip TipOfTheDay.zip (139.4 Кб, 13 просмотров)
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
Подскажите как оформить "промежуточное окно" Herly Общие вопросы Delphi 9 13.12.2009 23:06
Как сделать кнопку "больше"-"меньше" Clericos HTML и CSS 8 30.09.2009 20:20
C++, препроцессор, как из "int" сделать "char"? Максай Помощь студентам 3 05.09.2008 08:16
сделать окно "открыть","сохранить как" blackstersl Общие вопросы Delphi 1 24.08.2008 10:31