Конференция "KOL" » Оптимально сохранить большое количество кнопок [Delphi, Windows]
 
  • Дмитрий (15.12.12 11:54) [0]
    Создаю библиотеку визуальный компонентов в частности кнопок для виртуальной клавиатуры,  вот процедура:
    procedure   TForm12.ShablonShow;//( Ser, Sender:  PControl ):Boolean;
    var
    //ini: PIniFile;
    j, i: Integer;
    temp: PControl;
    fileName:string;

    procedure PrisvoiList(nomer: string);
    var
     obt: PGrushControl;
     style, j: Integer;
      s: array [1..5] of string;
      d: array [1..40] of Integer;
      dg: array [1..5] of string;
    tStyle: TGRushGradientStyle;
    b: TStream;
    gf: PGRushData;
    begin

    for j := 1 to 35 do
    d[j]:=Str2Int(listShablonKnopok.Values[nomer+int2str(j)]);
    for j := 1 to 5 do
    dg[j]:=listShablonKnopok.Values[nomer+int2str(j+35)];

    Unit_Virtual_KLava_Config.Obt.Width:=d[1];
    Unit_Virtual_KLava_Config.Obt.Height:=d[2];
    Unit_Virtual_KLava_Config.Obt.Def_ColorFrom:= d[3];
    Unit_Virtual_KLava_Config.Obt.Def_ColorTo:= d[4];
    Unit_Virtual_KLava_Config.Obt.Def_ColorOuter:= d[5];
    Unit_Virtual_KLava_Config.Obt.Def_ColorShadow:= d[6];
    Unit_Virtual_KLava_Config.Obt.Def_ColorText:= d[7];
    Unit_Virtual_KLava_Config.Obt.Def_BorderColor:= d[8];
    Unit_Virtual_KLava_Config.Obt.Def_BorderWidth:= d[9];
    Unit_Virtual_KLava_Config.Obt.Def_BorderRoundWidth:= d[10];
    Unit_Virtual_KLava_Config.Obt.Def_BorderRoundHeight:= d[11];
    Unit_Virtual_KLava_Config.Obt.Def_ShadowOffset:= d[12];

    Unit_Virtual_KLava_Config.Obt.Over_ColorFrom:= d[13];
    Unit_Virtual_KLava_Config.Obt.Over_ColorTo:= d[14];
    Unit_Virtual_KLava_Config.Obt.Over_ColorOuter:= d[15];
    Unit_Virtual_KLava_Config.Obt.Over_ColorShadow:= d[16];
    Unit_Virtual_KLava_Config.Obt.Over_ColorText:= d[17];
    Unit_Virtual_KLava_Config.Obt.Over_BorderColor:= d[18];
    Unit_Virtual_KLava_Config.Obt.Over_BorderWidth:= d[19];
    Unit_Virtual_KLava_Config.Obt.Over_BorderRoundWidth:= d[20];
    Unit_Virtual_KLava_Config.Obt.Over_BorderRoundHeight:= d[21];
    Unit_Virtual_KLava_Config.Obt.Over_ShadowOffset:= d[22];

    Unit_Virtual_KLava_Config.Obt.Down_ColorFrom:= d[23];
    Unit_Virtual_KLava_Config.Obt.Down_ColorTo:= d[24];
    Unit_Virtual_KLava_Config.Obt.Down_ColorOuter:= d[25];
    Unit_Virtual_KLava_Config.Obt.Down_ColorShadow:= d[26];
    Unit_Virtual_KLava_Config.Obt.Down_ColorText:= d[27];
    Unit_Virtual_KLava_Config.Obt.Down_BorderColor:= d[28];
    Unit_Virtual_KLava_Config.Obt.Down_BorderWidth:= d[29];
    Unit_Virtual_KLava_Config.Obt.Down_BorderRoundWidth:= d[30];
    Unit_Virtual_KLava_Config.Obt.Down_BorderRoundHeight:= d[31];
    Unit_Virtual_KLava_Config.Obt.Down_ShadowOffset:= d[32];

    style:=d[33];
    case style of
      1: tStyle:=gsSolid;
      2: tStyle:=gsVertical;
      3: tStyle:=gsHorizontal;
      4: tStyle:=gsDoubleVert;
      5: tStyle:=gsDoubleHorz;
      6: tStyle:=gsFromTopLeft;
      7: tStyle:=gsFromTopRight;
      end;
      Unit_Virtual_KLava_Config.Obt.Down_GradientStyle:=tStyle;

    style:=d[34];
    case style of
      1: tStyle:=gsSolid;
      2: tStyle:=gsVertical;
      3: tStyle:=gsHorizontal;
      4: tStyle:=gsDoubleVert;
      5: tStyle:=gsDoubleHorz;
      6: tStyle:=gsFromTopLeft;
      7: tStyle:=gsFromTopRight;
      end;
     Unit_Virtual_KLava_Config.Obt.Def_GradientStyle:=tStyle;
    style:=d[35];
    case style of
      1: tStyle:=gsSolid;
      2: tStyle:=gsVertical;
      3: tStyle:=gsHorizontal;
      4: tStyle:=gsDoubleVert;
      5: tStyle:=gsDoubleHorz;
      6: tStyle:=gsFromTopLeft;
      7: tStyle:=gsFromTopRight;
      end;
      Unit_Virtual_KLava_Config.Obt.Over_GradientStyle:=tStyle;

     for j := 1 to 5 do
       s[j]:=dg[j];
     //----считыванье шрифта

     Unit_Virtual_KLava_Config.Obt.Font.FontName:=S[1];
     Unit_Virtual_KLava_Config.Obt.font.Color:=Str2int(S[2]);
     Unit_Virtual_KLava_Config.Obt.font.FontHeight:=Str2Int(S[3]);
     if pos('SD291',s[4])<>0 then Unit_Virtual_KLava_Config.Obt.font.fontStyle:=Unit_Virtual_KLava_Config.Obt.font .fontStyle+[fsBold];
     if pos('SD292',s[4])<>0 then Unit_Virtual_KLava_Config.Obt.font.fontStyle:=Unit_Virtual_KLava_Config.Obt.font .fontStyle+[fsItalic];
     if pos('SD293',s[4])<>0 then Unit_Virtual_KLava_Config.Obt.font.fontStyle:=Unit_Virtual_KLava_Config.Obt.font .fontStyle+[fsUnderline];
     if pos('SD294',s[4])<>0 then Unit_Virtual_KLava_Config.Obt.font.fontStyle:=Unit_Virtual_KLava_Config.Obt.font .fontStyle+[fsStrikeOut];
     Unit_Virtual_KLava_Config.Obt.font.fontCharset:=Str2Int(S[5]);

    //---
    end;

    var m: Integer;
    b: PGRushData;
    p, p1: PStream;
    begin
    //---------------Загрука библиотеки кнопок-----------
    if FlagLoadKnopLib then
    begin
      FlagLoadKnopLib:=False ;
    //----------------НАЧАЛО-----------------------------
    fileName:=GetStartDir+'BiblotekKnopok.ini';
    if not(FileExists(fileName)) then
      exit;

    listShablonKnopok.LoadFromFile(GetStartDir+'BiblotekKnopokList.ini');
     m:=Str2Int(listShablonKnopok.Values['count']) ;
      PrisvoiList('№ '+ Int2Str(0)+ 'в');
     Obt.Left:=4;
     Obt.Top:=4;
     Obt.TabOrder:=-1 ;
     Obt.Visible:=True;
     Obt.OnClick:=TOnEvent( MakeMethod(nil, @TForm12.AddInActivShablon));

    for i := 1 to m-1 do
     begin
     //ini.Section:='№ '+ Int2Str(i);
     Obt:=NewGRushButton(ScrollBoxVisual,'№ '+ Int2Str(i)+ 'в');
      PrisvoiList('№ '+ Int2Str(i)+ 'в');
    //  Prisvoi;
     Obt.PlaceRight;
     Obt.Top:=4;
      Form12.Form.StatusText[0]:=PAnsiChar(Int2Str(i) + ' из '+ Int2Str(m));
     Applet.ProcessPaintMessages;
     Obt.OnClick:=TOnEvent( MakeMethod(nil, @TForm12.AddInActivShablon));
      Obt.TabOrder:=-1 ;
     Obt.Visible:=True;
     end;
    // ini.Free;
    end;
    //----------------КОНЕЦ-----------------------------
    //SetFocus(Form12.EditShablonWidth.Handle);
    //---------------Загрука библиотеки кнопок-----------

    end;



    Как более оптимально сохранять и закружат кнопки?
  • QAZ9 (16.12.12 11:27) [1]
    в нормальных программах такого типа нет кнопок вообще, а есть 2 картинки нажатых\отжатых кнопок + простая формула определения куда ткнули
    а нафига чегото там сохранять\загружать непонятно совсем
  • RWolf © (16.12.12 12:03) [2]
  • Дмитрий (17.12.12 03:38) [3]
    Это хорошо в Delphi, а в с библиотекой KOL как это работает, реализуется?
  • RWolf © (17.12.12 10:26) [4]

    > [3]

    пардон, не обратил внимания на название форума.
    в KOL это не работает.
  • RusSun © (20.12.12 19:25) [5]
    Здравствйте Дмитрий. У меня несколько вопросов:

    1 Какую Delphi используете? У меня Delphi 7
    2 Какую версию kol? почему спрашиваю у меня Grashconrols в новых
    версиях не работает (даёт кучу ошибок) использую kol294
    3 Можно ini скинуть? (думаю код из рабочей программы)
    не удобно все таки и так проще сделать рабочий пример.
    4 кусок
    case style of
      1: tStyle:=gsSolid;
      2: tStyle:=gsVertical;
      3: tStyle:=gsHorizontal;
      4: tStyle:=gsDoubleVert;
      5: tStyle:=gsDoubleHorz;
      6: tStyle:=gsFromTopLeft;
      7: tStyle:=gsFromTopRight;
      end;

    идёт три раза попробуйте два последующих из трех убрать.
    5 Undeclared identifier: 'Unit_Virtual_KLava_Config'-?
    это вроде тоже GRushControls в качестве формы?
  • QAZ9 (24.12.12 11:36) [6]
    Удалено модератором
  • coolface (24.12.12 12:11) [7]
    Кстати, вопрос Владимиру Кладову - он сейчас на чем "сидит"?
  • QAZ9 (24.12.12 14:20) [8]
    Удалено модератором
  • rdnks (25.12.12 13:12) [9]
    2 RusSun
    Странно, grush нормально работал в последних версиях KOL, по крайней мере у меня =)
  • RusSun © (17.01.15 07:50) [10]
    Вот как вариант 2 примера:
    Dm3m14.rar
    https://yadi.sk/d/PdnWr3Z_e3T2D
    Dm4m14.rar
    https://yadi.sk/d/7uPreK3Ue3T2F
    Два вместе
    Dm3,4m14.rar
    https://yadi.sk/d/DBpYkad3e3T2H
 
Конференция "KOL" » Оптимально сохранить большое количество кнопок [Delphi, Windows]
Есть новые Нет новых   [118240   +21][b:0][p:0.004]