Модераторы: THandle, bems
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нестандартные решения стандартных проблем 
:(
    Опции темы
THandle
Дата 14.2.2008, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 7
Всего: 372



Если у Вас есть какое то красивое и нестандартное решение какого то вопроса или просто интересный код, то пожадуйста, выкладывайте его здесь. 
PM   Вверх
bems
Дата 20.2.2008, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 2
Всего: 88



Название темы - ЗЛО

Добавлено через 18 секунд
нужно наоборот smile


--------------------
Обижено школьников: 8
PM MAIL   Вверх
THandle
Дата 20.2.2008, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 7
Всего: 372



Цитата(bems @  20.2.2008,  18:51 Найти цитируемый пост)
нужно наоборо

Не. smile Для наоборот другая темка будет. И пожалуйста давайте тута не будем флудить.
PM   Вверх
Alexeis
Дата 21.2.2008, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 4
Всего: 459



Цитата(THandle @  20.2.2008,  19:19 Найти цитируемый пост)
И пожалуйста давайте тута не будем флудить.

  Правильно не будем флудить  smile  smile  smile  smile  smile  smile  smile 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Akella
Дата 26.2.2008, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 7
Всего: 329



правильно, не будем флудить, согласен  smile  smile  smile  smile 
PM MAIL   Вверх
THandle
Дата 26.2.2008, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 7
Всего: 372



Alexeis, Akella, и как вам не стыдно? smile  Ведь модераторы, взрослые, умные люди... Не хорошо товаищи, не хорошо. smile 

Это сообщение отредактировал(а) THandle - 26.2.2008, 11:18
PM   Вверх
lukas
Дата 26.2.2008, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: нет
Всего: 15



Я могу только описать один из своих нестандартных способов использования имени компонента для благих целей  smile ... 

Вообщем делаю форму с компонентами, от которой затем все наследуются, и в зависимости от имен компонентов на форме даю каждому свой функционал, знаете как удобно... и названия более менее приличные и над кодом постоянно не нужно задумываться... Вообщем я частенько использую названия компонентов в качестве обозначения их функционала...  smile 

ну вот кусок:

Код

...
...
...
procedure TTActionForm.EditBtnClick(Sender: TObject);
begin
 SelFiles.ShowModal;
  if SelFiles.ResEdit <> '' then
     TDMSEditBtn(Sender).Text := SelFiles.ResEdit;
end;

procedure TTActionForm.EditBtnClick2(Sender: TObject);
begin
 PropObj.ShowModal;
  if PropObj.ResEdit <> '' then
     TDMSEditBtn(Sender).Text := PropObj.ResEdit;
end;

procedure TTActionForm.EditBtnClick3(Sender: TObject);
begin
 obj_select.ShowModal;
  if ObjSelect <> '' then
     TDMSEditBtn(Sender).Text := ObjSelect;
end;

function GetPrCom(Obj: TComponent; Self: TTActionForm): String;
begin
  if GetPropInfo(Obj,'Text')<>nil then
     Result := GetPropValue(Obj,'Text')
  else if Obj Is TListBox then
     Result := TListBox(Obj).Items[TListBox(Obj).ItemIndex]
  else if Obj Is TComboBox then
     Result := TComboBox(Obj).Items[TComboBox(Obj).ItemIndex]
  else if Obj is TMemo then
  Result := StringReplace(TMemo(Obj).Text,#13#10,'\n',[rfReplaceAll,rfIgnoreCase])
  else if Obj is TCheckBox then
  Result := BoolToStr(TCheckBox(Obj).Checked);

 if ToAll then begin

  if (Commas)and(Pos('cm',OBJ.Name)>0) then
   if Result='' then
    if TypeComma = 1 then Result := ''''''
      else Result := '""';


  if (Commas)and(
  Pos('cm',OBJ.Name)>0) then
   if Result<>'' then

   if TypeComma = 2 then begin
     if (Result[1]<>'"')and(Result[Length(Result)]<>'"') then
        Result := '"' + Result + '"';
   end else begin
     if (Result[1]<>'''')and(Result[Length(Result)]<>'''') then
        Result := '''' + Result + '''';
   end;


 end else begin
  if (Self.Commas)and(Pos('cm',OBJ.Name)>0) then
   if Result='' then
    if Self.TypeComma = 1 then Result := ''''''
      else Result := '""';

  if (Self.Commas)and(
  Pos('cm',OBJ.Name)>0) then
   if Result<>'' then

   if Self.TypeComma = 2 then begin
     if (Result[1]<>'"')and(Result[Length(Result)]<>'"') then
        Result := '"' + Result + '"';
   end else begin
     if (Result[1]<>'''')and(Result[Length(Result)]<>'''') then
        Result := '''' + Result + '''';
   end;


 end;
end;

procedure SetParamValue(Obj: TComponent; Value: String);
begin
if (Pos('cm',OBJ.Name)>0)and(Commas) then
         Value := DelKav(Value);
Value := StringReplace(Value,'\n',#13#10,[rfReplaceAll,rfIgnoreCase]);

 if GetPropInfo(OBj,'Text')<>nil then
  begin
    SetPropValue(Obj,'Text',Value);
    exit;
  end;
 if Obj is TCheckBox Then begin
   TCheckBox(Obj).Checked := StrToBool(Value);
   exit;
 end;
 if Obj is TComboBox then begin
   TComboBox(Obj).ItemIndex := TComboBox(Obj).Items.IndexOf(Value);
   if TComboBox(Obj).Style = csDropDown then
    TComboBox(Obj).Text := Value;
    exit;
 end;
 if Obj is TListBox then begin
   TListBox(Obj).ItemHeight := TListBox(Obj).Items.IndexOf(Value);
   exit;
 end;
 TControl(Obj).SetTextBuf(PChar(Value));
end;

procedure TTActionForm.b_OkClick(Sender: TObject);
  Var
  I,PrInd: Integer;
  Nam: String;
  Frm: TForm;
begin
 Inif.WriteInteger('Main','Left',Self.Left);
 Inif.WriteInteger('Main','Top',Self.Top);
 Inif.WriteInteger('Main','Width',Self.Width);
 Inif.WriteInteger('Main','Height',Self.Height);
 if not ToAll then begin
 Inif.WriteBool('Main','SaveOpt',Self.SaveOpt);
 Inif.WriteBool('Main','Commas',Self.Commas);
 Inif.WriteInteger('Main','TypeComma',Self.TypeComma);
 end;
 
 Frm := TForm(TControl(Sender).Owner);
 for i:=0 to Frm.ComponentCount-1 do
    begin
      Nam := UpperCase(Frm.Components[i].Name);
      if (Pos('PR',Nam)=1)and(Nam[3] in ['1'..'9']) then
       begin
          PrInd := StrToInt(Nam[3]);
          PR[PrInd] := GetPrCom(Frm.Components[i],
          TTActionForm(TControl(Sender).Owner));
       end else if (Pos('OBJ1',Nam)=1) then begin
          ObjName := GetPrCom(Frm.Components[i],
          TTActionForm(TControl(Sender).Owner))
       end;
    end;
end;

procedure TTActionForm.FormActivate(Sender: TObject);
  Var
  I,Len,PrInd: Integer;
  Nam: String;
begin
b_Help.Visible := FileExists(ProgDir+'\Language\'+LocalLng+'\Help\'+
TComponent(Sender).Name+'.html');

ForceDirectories(ProgDir+'\Config');
Inif := TIniFile.Create(ProgDir + '\Config\' + Self.Name + '.ini');

Self.SaveOpt := Inif.ReadBool('Main','SaveOpt',True);
if Self.SaveOpt then begin
Self.Left := Inif.ReadInteger('Main','Left',Self.Left);
Self.Top  := Inif.ReadInteger('Main','Top',Self.Top);
Self.Width := Inif.ReadInteger('Main','Width',Self.Width);
Self.Height := Inif.ReadInteger('Main','Height',Self.Height);
end;


Self.Commas  := Inif.ReadBool('Main','Commas',True);
Self.TypeComma := Inif.ReadInteger('Main','TypeComma',2);

if ResEdit <> '' then begin
if PosSim(ResEdit,'(')>0 then begin
ResEdit := GetInSkobka(ResEdit);
  Len := GetPRMCount(ResEdit,',');
  for i:=1 to Len do
    PR[I] := GetFastParam(ResEdit,I,',',True);
end else begin
  PR[1] := CopyL(ResEdit,'=');
  ObjName := Copy(PR[1],1,Q_PosLastStr('.',PR[1])-1);
  PR[2] := CopyR(ResEdit,'=');
end;
end;

  for i:=0 to Self.ComponentCount-1 do
    begin
      Nam := UpperCase(Self.Components[i].Name);
      if Pos('_DLG',Nam)>0 then
       begin
         TDMSEditBtn(Self.Components[i]).OnButtonClick := EditBtnClick;
       end;
      if Pos('_PROP',Nam)>0 then
       begin
         TDMSEditBtn(Self.Components[i]).OnButtonClick := EditBtnClick2;
       end;
      if Pos('_OBJ',Nam)>0 then
       begin
         TDMSEditBtn(Self.Components[i]).OnButtonClick := EditBtnClick3;
       end;
     if ResEdit <> '' then
      if (Pos('PR',Nam)=1)and(Nam[3] in ['1'..'9']) then
       begin
          PrInd := StrToInt(Nam[3]);
          SetParamValue(Self.Components[i],PR[PrInd]);
       end else if (Pos('OBJ1',Name)=1) then begin
          SetParamValue(Self.Components[i],ObjName);
       end;
    end;

end;
...
...
...



--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle

Добро пожаловать в форум группы "Delphi".

В разделе разрешается:

  • Флудить (в приемлемых величинах)
  • Обсуждать модерирование данного раздела (но не его модератора)
  • Добавлять свои правила если они не противоречат существующим
  • Делать наезды на пешеходов***

Строго запрещено:

  • Размещать рекламу
  • Совершать оскорбления личностей
  • Материться
  • *** Пешеходами не являются (ко)модераторы, админы, участники клуба.

Если Вам понравилась атмосфера форума, заходите к нам чаще! Люблю, целую, вечно Ваш, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Форум группы: delphi | Следующая тема »


 




[ Время генерации скрипта: 0.0518 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.