Создание своего диалога выбора цвета

В этой статье я решил описать один вариант создания своего диалога выбора цвета. Диалог выбора цвета, описанный в этой статье немного напоминает Photoshop-овский (но не совсем).

В общем приступим! Сначала создаём форму и помещаем туда всё необходимое:

7 компонентов типа TImage и назовём их так:

MainViewer – экран вывода градиента;
ScalKontr – определяет присутствие изменяемого компонента RGB цвета в градиенте (если выбран R_GB - то красного, если G_RB – то зелёного, если B_RG – то синего) от 0 до 255, путем нажатия курсора на нужную область.
Yarcost – шкала яркости выбранного оттенка.
Proba 1 – для выода цвета, находящегося под курсором при выборе насыщенности компонентом ScalKontr.
Proba 2 – для вывода оттенка, находящегося под курсором при выборе результата и яркости с помощью MainViewer или Yarcost.
ImageZahvat – для вывода выбранной в ScalKontr насыщенности.
Itog – для вывода выбранного оттенка.
12 Edit-ов, 3 RadioButton и 2 кнопки . Их оставим в покое (в смысле не переименовываем).

Теперь нам необходимо определиться с необходимыми процедурами.

Во-первых – это процедура генерирования шкалы контраста.

Во-вторых – это процедура генерирования градиента в MainViewer (в соответствии с выбранным типом градиента и выбранной насыщенностью).

В-третьих – процедура генерирования шкалы яркости, в соответствии с выбранным оттенком.

Начнём с первого. Сам нижеприведённый код я поместил в обработчик OnCreate формы.

Пояснения смотрите в комментариях к коду:

var 
  LineColor, ViewColor: TColor; 
  ColR, ColG, ColB, i, j:integer; 
begin 
  {Если выбран баланс Красного с Синим и Зелёным (R_GB)} 
  if RadioButton1.Checked then 
  begin 
    ColR:=255; 
    ColG:=0; 
    ColB:=0; 
    for j:=0 to 255 do 
    begin 
      LineColor:=RGB(255-j, 0, 0); //Изменяем значение красного цвета 
      for i:=0 to 17 do 
        ScalKontr.Canvas.Pixels[i, j]:=LineColor; //рисуем точку 
    end; 
  end; 
 
    {Если выбран баланс Зелёного с Красным и Синим (G_RB)} 
  if RadioButton2.Checked then 
  begin 
    ColR:=0; 
    ColG:=255; 
    ColB:=0; 
    for j:=0 to 255 do 
    begin 
      LineColor:=RGB(0, 255-j, 0); //Изменяем значение зелёного  цвета 
      for i:=0 to 17 do 
        ScalKontr.Canvas.Pixels[i,j]:=LineColor; //рисуем точку 
    end; 
  end; 
 
    {Если выбран баланс Синего с Красным и Зелёным (B_RG)} 
  if RadioButton3.Checked then 
  begin 
    ColR:=0; 
    ColG:=0; 
    ColB:=255; 
    for j:=0 to 255 do 
    begin 
      LineColor:=RGB(0, 0, 255-j); //Изменяем значение синего цвета 
      for i:=0 to 17 do 
        ScalKontr.Canvas.Pixels[i,j]:=LineColor; //рисуем точку 
    end; 
  end; 
end;
Думаю здесь всё понятно. Далее приступим к основной процедуре рисования градиента в MainViewer. Вот код:
procedure GenerateRGBInOutGrad(ClrOutR, ClrOutG, ClrOutB: Integer); 
var 
  i, j: Integer; //счётчики 
  PixelColor: TColor; //цвет пиксела 
  Holst: TBitMap; //Объект для записи пикселей 
begin 
  Holst:=TBitMap.Create; //создаём объект типа TBitMap 
  Holst.Width:=256; //указываем ширины 
  Holst.Height:=256; //указываем высоту 
 
  if ClrDialog.RadioButton1.Checked then //если выбрана RadioButton1 
  begin 
     {Палитра красного с зелёным и синим} 
    for j:=0 to 255 do //цикл по оси Y 
    begin 
      for i:=0 to 255 do //цикл по оси X 
      begin 
        PixelColor:=RGB(ClrOutR, j, i); {привязываем значения зелёного и синего к изменениям координат и переводим из
RGB в TColor} 
        Holst.Canvas.Pixels[i, j]:=PixelColor; //Рисуем точку 
      end;
    end;
  end;
 
  if ClrDialog.RadioButton2.Checked=true then //если выбрана RadioButton2 
  begin 
    {Палитра зелёного с красным и синим} 
    for j:=0 to 255 do //цикл по оси Y 
    begin 
      for i:=0 to 255 do //цикл по оси X 
      begin 
        PixelColor:=RGB(j, ClrOutG, i); {привязываем значения красного и синего к изменениям координат и переводим из
RGB в TColor} 
        Holst.Canvas.Pixels[i, j]:=PixelColor; //Рисуем точку 
      end;
    end;
  end;
 
  if ClrDialog.RadioButton3.Checked=true then //если выбрана RadioButton3 
  begin 
    {Палитра синего с красным и зелёным} 
    for j:=0 to 255 do //цикл по оси Y 
    begin 
      for i:=0 to 255 do //цикл по оси X
      begin
        PixelColor:=RGB(j, i, ClrOutB); {привязываем значения красного и зелёного к изменениям координат и переводим из
RGB в TColor} 
        Holst.Canvas.Pixels[i, j]:=PixelColor; //Рисуем точку
      end;
    end;
  end;
 
  ClrDialog.MainViewer.Canvas.Draw(0,0,Holst); //рисуем всю картину на компонент TImage 
  Holst.Free; //освобождаем память, занимаемую объёктом Holst 
end;
Вот!

Ну и, наконец, код вывода шкалы яркости:
{========================================================== Процедура генерации полосы яркости выбранного оттенка}
procedure GenerYarkost(ColR, ColG, ColB: Real); 
var 
  i, j: integer; //счётчики 
  LineColor: TColor; //цвет TColor 
  StepR, StepG, StepB: Real; {шаг изменения для каждого цвета, необходимы для равномерного смешивания цветов по всей
длине линии яркости. }
begin
  ClrDialog.Edit4.Text:=IntToStr(round(ColR));   {Эти строки} 
  ClrDialog.Edit5.Text:=IntToStr(round(ColG));   {нужны лишь в моём} 
  ClrDialog.Edit6.Text:=IntToStr(round(ColB));   {примере. В Вашем может и не понадобятся.} 
 
  {Генерация шкалы яркости для выбранного оттенка} 
  StepR:=(256-ColR)/256; //определение шага для красного 
  StepG:=(256-ColG)/256; //определение шага для зелёного 
  StepB:=(256-ColB)/256; //определение шага для синего 
 
  j:=256; //здесь счётчику по Y-ку присваивается начальное значение 
  repeat
      j:=j-1; {Цикл по Y-ку организован с помощью repeat until чтобы 
    организовать обратный отсчёт от 256 до 1. Это сделано 
    для того, чтобы заполнять шкалу не с верху вниз, а снизу 
    вверх (т.к. начальная точка экранных координат 
    расположена в верхнем правом углу.)} 
 
    ColR:=ColR+StepR; {В каждом переходе цикла по Y} 
    ColG:=ColG+StepG; {увеличиваем значение соответствующего цвета} 
    ColB:=ColB+StepB; {на соответствующий ему шаг.} 
    for i:=0 to 17 do 
    begin 
      {На всякий случай проверим значения цветов на вхождение в пределы 255} 
      if ColR>255 then ColR:=255; 
      if ColG>255 then ColG:=255; 
      if ColB>255 then ColB:=255; 
 
      LineColor:=RGB(round(ColR), round(ColG), round(ColB)); //Записываем оттенок 
      ClrDialog.Yarcost.Canvas.Pixels[i, j]:=LineColor; //Рисуем точку в компонент TImage 
    end;
  until j=1;
end;
Вот в принципе все необходимые процедуры для написания такого диалога. Всё остальное – дело техники и это вы найдёте в примере к статье. Правда есть ещё один момент, который необходимо описать – это перевод из TColor в RGB формат. Чисто для примера сделаем 3 переменные типа integer (пусть это будут ColR , ColG и ColB ) и одну переменную типа TColor (Например, ColTColor). Далее присвоим значение переменной ColTColor. Пусть это будет зелёный (clGreen). Ну и, наконец, выделим из этой переменной значения RGB компонентов в соответствующие переменные типа integer. Весь код:
procedure TestTColorToRGB; 
var 
  ColR, ColG, ColB: integer; 
  ColTColor: TColor; 
begin 
  ColTColor:=clGreen; //присваиваем зелёный цвет 
 
  ColR:= ColTColor mod $100; //выделяем красный 
  ColG:=( ColTColor div $100) mod $100; //выделяем зелёный 
  ColB:= ColTColor div $10000; //выделяем синий 
end;
У переменных должны получиться следующие значения:

ColR = 0;
ColG = 255;
ColB = 0.

Вот и всё, Удачи!


  1. Ila
    Ila 7 months ago
    It is with sad regret to inform you StarDataGroup.com is shutting down.
    It has been a tough year all round and we decided to go out with a bang!

    Any group of databases listed below is $49 or $149 for all 16 databases in this one time offer.
    You can purchase it at www.StarDataGroup.com and view samples.

    - LinkedIn Database
    43,535,433 LinkedIn Records

    - USA B2B Companies Database
    28,147,835 Companies

    - Forex
    Forex South Africa 113,550 Forex Traders
    Forex Australia 135,696 Forex Traders
    Forex UK 779,674 Forex Traders

    - UK Companies Database
    521,303 Companies

    - German Databases
    German Companies Database: 2,209,191 Companies
    German Executives Database: 985,048 Executives

    - Australian Companies Database
    1,806,596 Companies

    - UAE Companies Database
    950,652 Companies

    - Affiliate Marketers Database
    494,909 records

    - South African Databases
    B2B Companies Database: 1,462,227 Companies
    Directors Database: 758,834 Directors
    Healthcare Database: 376,599 Medical Professionals
    Wholesalers Database: 106,932 Wholesalers
    Real Estate Agent Database: 257,980 Estate Agents
    Forex South Africa: 113,550 Forex Traders

    Visit www.stardatagroup.com or contact us with any queries.

    Kind Regards,
    StarDataGroup.com
  2. Forrest
    Forrest 7 months ago
    It is with sad regret to inform you StarDataGroup.com is shutting down.

    Fire sale till the 7th of Feb.

    Any group of databases listed below is $49 or $149 for all 16 databases in this one time offer.
    You can purchase it at www.StarDataGroup.com and view samples.

    - LinkedIn Database
    43,535,433 LinkedIn Records

    - USA B2B Companies Database
    28,147,835 Companies

    - Forex
    Forex South Africa 113,550 Forex Traders
    Forex Australia 135,696 Forex Traders
    Forex UK 779,674 Forex Traders

    - UK Companies Database
    521,303 Companies

    - German Databases
    German Companies Database: 2,209,191 Companies
    German Executives Database: 985,048 Executives

    - Australian Companies Database
    1,806,596 Companies

    - UAE Companies Database
    950,652 Companies

    - Affiliate Marketers Database
    494,909 records

    - South African Databases
    B2B Companies Database: 1,462,227 Companies
    Directors Database: 758,834 Directors
    Healthcare Database: 376,599 Medical Professionals
    Wholesalers Database: 106,932 Wholesalers
    Real Estate Agent Database: 257,980 Estate Agents
    Forex South Africa: 113,550 Forex Traders

    Visit www.stardatagroup.com or contact us with any queries.

    Kind Regards,
    StarDataGroup.com
  3. Robbin
    Robbin 7 months ago
    It is with sad regret to inform you StarDataGroup.com is shutting down.

    Fire sale going on!

    Any group of databases listed below is $49 or $149 for all 16 databases in this one time offer.
    You can purchase it at www.StarDataGroup.com and view samples.

    - LinkedIn Database
    43,535,433 LinkedIn Records

    - USA B2B Companies Database
    28,147,835 Companies

    - Forex
    Forex South Africa 113,550 Forex Traders
    Forex Australia 135,696 Forex Traders
    Forex UK 779,674 Forex Traders

    - UK Companies Database
    521,303 Companies

    - German Databases
    German Companies Database: 2,209,191 Companies
    German Executives Database: 985,048 Executives

    - Australian Companies Database
    1,806,596 Companies

    - UAE Companies Database
    950,652 Companies

    - Affiliate Marketers Database
    494,909 records

    - South African Databases
    B2B Companies Database: 1,462,227 Companies
    Directors Database: 758,834 Directors
    Healthcare Database: 376,599 Medical Professionals
    Wholesalers Database: 106,932 Wholesalers
    Real Estate Agent Database: 257,980 Estate Agents
    Forex South Africa: 113,550 Forex Traders

    Visit www.stardatagroup.com or contact us with any queries.

    Kind Regards,
    StarDataGroup.com
  4. Deloris
    Deloris 7 months ago
    Use SendBulkMails.com to run email campaigns from your own private dashboard.

    Cold emails are allowed and won't get you blocked :)

    - 1Mil emails / mo @ $99 USD
    - Dedicated IP and Domain Included
    - Detailed statistical reports (delivery, bounce, clicks etc.)
    - Quick and easy setup with extended support at no extra cost.
    - Cancel anytime!

    Regards,
    www.SendBulkMails.com
  5. Elisa
    Elisa 6 months ago
    Do you need more clients?

    We have amazing databases starting at $9.99 until the end of the Month!

    Visit us at StarDataGroup.com
  6. SendBulkMails.com
    SendBulkMails.com 6 months ago
    SendBulkMails.com allows you to reach out to clients via cold email marketing.

    - 1Mil emails starter package
    - Dedicated IP and Domain Included

    - Detailed statistical reports (delivery, bounce, clicks etc.)

    - Quick and easy setup with extended support at no extra cost.

    - Cancel anytime!

    SendBulkMails.com
  7. Dwayne
    Dwayne 6 months ago
    Hey,

    Listen, business is tough right now for most people.

    Does this sound like your situation?

    -Not enough quality leads?
    -Not enough revenue?
    -Always looking for more business?
    -Working too hard?

    I have the solution to help make this a great year for your business.

    I will show you how to Drive Revenue, Sales and Commissions...during the day and more importantly while you sleep...

    ==> https://sesforyou.com

    Regards,
    SesForYou.com
  8. Audrea
    Audrea 5 months ago
    Hello,

    BestLocalData.com has a special package you get any group of databases for $49 or $249 for all 16 databases and unlimited emails for a year(Domain, IP, Dashboard included).

    You can purchase it on BestLocalData.com and see samples if you are interested.
  9. Arthur
    Arthur 5 months ago
    Your All In One Solution For Creating All The Content You'll Ever Need.

    Proprietary AI Turns YouTube Videos Into Traffic Getting Articles At The Press Of A Button!

    We’ve Been Getting Free Autopilot Traffic From Google Without SEO Experience For Over 2 Years By Converting Others YouTube Videos Into Articles…

    https://warriorplus.com/o2/a/gmvfs/0
  10. Theron
    Theron 5 months ago
    Need extra income?

    A fully hosted, done for you content + monetisation and a stunning design web based software that creates a fully automated done for you cryptocurrency affiliate site,

    Visit us: https://warriorplus.com/o2/a/f5s4y/0
  11. Bonnie
    Bonnie 5 months ago
    Hey,

    It was nice speaking to you the other day, this is the service I was telling you about that helped us boost our ROI almost 2000%

    Its a company called Lifemail.studio sorry it took so long to get back to you. They allow you to send any email doesn't matter what.

    We dealt with a guy named Michael, he was friendly and got us setup really quickly.

    Regards,
    Bonnie
  12. Klaus
    Klaus 5 months ago
    Hello,

    Send unlimited emails to unlimited lists with one click and no monthly fees!

    $99 once off!

    LifeMailNow.com
  13. Gilbert
    Gilbert 4 months ago
    Do you need clients?

    We compiled some of the world's top databases for you at ridiculous low prices. $49 for any of our databases or $99 for all 16 databases!

    Visit BestLocalData.com

    Regards,
    Gilbert
  14. Clint
    Clint 4 months ago
    Hey!

    BestLocalData has an amazing special. 16 databases for $99.

    LinkedIn(43million records) USA B2B (28 million companies), Australia, South Africa, UK, Germany and all of that included.

    Instant delivery!

    https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7S34LZQSKKQHG

    Or check out more on our website!

    Regards,
    Clint
  15. Leona
    Leona 4 months ago
    Hello from SendBulkMails.com,

    We have a special limited offer for you to send unlimited emails.

    We allow non-permission based emails and you won't ever get blocked.

    We also buy your domain for you and give you a clean IP and setup your DNS records.

    Check us out on SendBulkMails.com
  16. Heriberto
    Heriberto 4 months ago
    Hello from BestLocalData.com

    Due to the pandemic BestLocalData.com is shutting down on the 14th of May.

    We have more than a 100 million records of Key Executives all over the world.

    We hope that this Data will serve other companies to succeed in their marketing efforts.

    We have reduced all the prices to next to nothing on our website BestLocalData.com

    We wish you the best in your future endeavours.
  17. Alan
    Alan 4 months ago
    Hello from order-fulfillment.net,

    Doing your own product shipping or order fulfillment in house?

    Tired of it? Visit us on www.order-fulfillment.net

    We can store, inventory, and manage your drop shipping / order fulfillment for you.

    Based in the US for almost 2 decades - we ship around the world and will save you time and money.

    Who would be the best contact at your company to discuss?

    Here are some of the items we ship for clients:
    -Books, training manuals, guides
    -New member welcomes boxes and gifts
    -Product samples
    -Marketing materials
    -Medical program test kits
    -Follow up gifts to clients, leads, and prospects

    Thank you!
    Fulfillment Warehouse
    https://order-fulfillment.net
  18. Sabrina
    Sabrina 3 months ago
    Hello,

    It is with sad regret to inform you that BestLocalData.com is shutting down.

    We have made all our databases for sale for a once-off price.

    Visit our website to get the best bargain of your life. BestLocalData.com

    Regards,
    Sabrina
  19. Valorie
    Valorie 3 months ago
    Hello,

    It is with sad regret to inform you that BestLocalData.com is shutting down.

    We have made all our databases for sale for a once-off price.

    Visit our website to get the best bargain of your life. BestLocalData.com

    Regards,
    Valorie
  20. Luther
    Luther 3 months ago
    Hello from order-fulfillment.net,

    Doing your own product shipping or order fulfillment in house?

    Tired of it? Visit us on www.order-fulfillment.net

    We can store, inventory, and manage your drop shipping / order fulfillment for you.

    Based in the US for almost 2 decades - we ship around the world and will save you time and money.

    Who would be the best contact at your company to discuss?

    Here are some of the items we ship for clients:
    -Books, training manuals, guides
    -New member welcomes boxes and gifts
    -Product samples
    -Marketing materials
    -Medical program test kits
    -Follow up gifts to clients, leads, and prospects

    Thank you!
    Fulfillment Warehouse
    https://order-fulfillment.net
  21. Beatrice
    Beatrice 3 months ago
    Hello,

    It is with sad regret to inform you that BestLocalData.com is shutting down.

    We have made all our databases for sale for a once-off price.

    Visit our website to get the best bargain of your life. BestLocalData.com

    Regards,
    Beatrice
  22. Booker
    Booker 3 months ago
    We at BestLocalData.com has been hit badly by Covid-19 and as a result BestLocalData.com is shutting down.

    We provided the best data to companies to find their right customer base, we don't want other companies to go down the same path we went and go out of business.

    As a result we are providing our data till the end of the week at the lowest possible prices.

    BestLocalData.com
  23. Tomoko
    Tomoko 3 months ago
    Hello from order-fulfillment.net,

    Doing your own product shipping or order fulfillment in house?

    Tired of it? Visit us on www.order-fulfillment.net

    We can store, inventory, and manage your drop shipping / order fulfillment for you.

    Based in the US for almost 2 decades - we ship around the world and will save you time and money.

    Who would be the best contact at your company to discuss?

    Here are some of the items we ship for clients:
    -Books, training manuals, guides
    -New member welcomes boxes and gifts
    -Product samples
    -Marketing materials
    -Medical program test kits
    -Follow up gifts to clients, leads, and prospects

    Thank you!
    Fulfillment Warehouse
    https://order-fulfillment.net
  24. Nelly
    Nelly 2 months ago
    Hello from FbCourses.net

    Want to pay $0.01 a click? We got you covered.

    A great team of Global Digital Marketing experts have compiled this list of 13 Best + Free Facebook Advertising Training, Classes and Courses to help you learn and excel at Facebook Ads & Marketing.

    Thousands of professionals have already benefited from this list on Facebook Training.

    Regards,
    Nelly
  25. Janie
    Janie 2 months ago
    The plug welcomes you with a super discount of 15% on every product for a limited period of time! (Promo code: THEPLUG)

    We offer the largest assortment of private databases! Such as:

    - The Largest collection of Linkedin Databases!
    - Forex Consumers (worldwide)
    - Casino Consumers (worldwide)
    - Business Databases (worldwide)
    - Cryptocurrency consumers (worldwide)
    - many more..

    And the best part of it! We are the only source you will ever need! We have the largest database on the market with the greatest prices and team.

    Visit us: https://silent-plug.com/
  26. rpfomryjwk
    rpfomryjwk 2 months ago
    Создание своего диалога выбора цвета - The Delphi
    [url=http://www.g6827m909wj2quy45ia0imprp179y22hs.org/]urpfomryjwk[/url]
    rpfomryjwk http://www.g6827m909wj2quy45ia0imprp179y22hs.org/
    <a href="http://www.g6827m909wj2quy45ia0imprp179y22hs.org/">arpfomryjwk</a>
  27. Dulcie
    Dulcie 2 months ago
    It is with sad regret to inform you that because of the Covid pandemic BestLocalData.com is shutting down at the end of the month.

    We have lost family members and colleagues and have decided to shut down BestLocalData.com

    It was a pleasure serving you all these years. We have made all our databases available for $99 (All of it for $99) for those interested.

    Kind Regards,
    BestLocalData.com
    Dulcie
  28. Genie
    Genie 2 months ago
    Hi ,

    I am following up on my message below.

    Who would I speak with about handling your US order fulfillment and shipping?

    Regards,
    Genie
    order-fulfillment.net

    ------------------------------------------------------------------------

    Hi,

    Who would I speak with at your company that manages your product shipping and order fulfillment?

    We are US company, offering warehousing, order fulfillment and drop shipping to our customers since 2005.

    Here are some of the items we ship for clients:

    -Books, training manuals, guides
    -E-com product drop shipping
    -New member welcomes boxes and gifts
    -Product samples
    -Health and Medical supplements
    -Marketing materials
    -Medical program test kits
    -Follow up gifts to clients, leads, and prospects

    Do you have some time to discuss - phone / email ?

    Thanks,

    Fulfillment Specialist
    www.Order-Fulfillment.net
  29. Blake
    Blake a month ago
    New data just for you!

    Hi, just letting you know you can now select from hundreds of millions of data records in 200+ countries and in various industries. Benefit from it as soon as possible.

    Browse our databases or request a custom list that suits your needs.

    There's something for everyone.

    Have a look!
    https://sundatagroup.one
  30. Sal
    Sal 26 days ago
    Hello.

    Need leads for your business? We have a limited offer where we sell almost 400 million executives around the world in 165 countries for $299.

    Or you can buy your country individually for $99.

    www.SunDataGroup.one
  31. Patty
    Patty 20 days ago
    We have an amazing database of leads for you.

    All countries are $99 and you can buy the entire world 165 countries for $179.

    This offer is valid till Friday.

    www.SunDataGroup.one
  32. Aiden
    Aiden 15 days ago
    Hello.

    It is with sad regret to inform you we are shutting down.

    We are selling our entire leads database 366,295,395 Companies / Executives. for $179

    All countries are $99 and you can buy the entire world 165 countries for $179.

    www.SunDataGroup.one
  33. Donny
    Donny 14 days ago
    Hi from Order-Fulfillment.net

    Who would I speak with at your company about any of your order fulfillment and drop shipping needs?

    My company Order-Fulfillment.net can warehouse, inventory, and manage your drop shipping / order fulfillment for your customer orders.

    Based in the USA for almost 2 decades, near major USA air and sea ports.

    Here are some of the items we currently pick, pack and ship for clients:

    -Books, training manuals, guides
    -New member welcomes boxes and gifts
    -Product samples
    -Marketing materials
    -Medical program test kits
    -Follow up gifts to clients, leads, and prospects

    Thank you!

    Fulfillment Warehouse
    Order-Fulfillment.net
    Drop Shipping and Order Fulfillment Specialists since 2003
  34. Mireya
    Mireya 5 days ago
    Hello from SunDataGroup.com

    We are selling leads from around the world. I thought your company could benefit from it.

    You can visit our website www.SunDataGroup.com to see some of our data.

    We have a special offer running. All our databases for $99.
Отменить.