1

Konu: Bir değişkenin içerisinde alt değerleri tutabilecek yapı nasıl kurulur

Arkadaşlar merhaba.
Elimde VB örnek koddan foxproya aktarmaya çalıştığım bir parça var.
VB de bir değişkeni;

Public Type TFrameBitmapInfo
      BitmapWidth As Long
      BitmapHeight As Long
      BitmapBitsPerPixel As Long
      BitmapLineSize As Long
      BitmapSize As Long
      BitmapPlanes As Long
      BitmapHandle As Long
      BitmapDataPtr As Long
      BitmapDC As Long
      CurrentXMouseLocation As Long
      CurrentYMouseLocation As Long
      LastXMouseDownLocation As Long
      LastYMouseDownLocation As Long
      IsMouseDown As Boolean
      LastMouseButtonClicked As TxMouseButton
End Type

şeklinde bir yapı kurarak ;
   Dim NewFrameBitmap As TFrameBitmapInfo
şeklinde tanımlamış ve ;
   CopyMemory VarPtr(NewFrameBitmap), BITMAPINFO, LenB(NewFrameBitmap)
u komutla da BITMAPINFO nun içindeki değerler kümesini buna aktarmış.
sonuçta
NewFrameBitmap.BitmapWidth
NewFrameBitmap.BitmapHeight
gibi bir çok değeri içeren bir yapıda değerler kümesi oluşmuş. Bunu foxta nasıl yapabiliriz, yada bana
BITMAPINFO nun içindeki BitmapDC değeri lazım onu nasıl elde edecem.

Yardım edebilirseniz çok sevinirim. Şimdiden teşekkürler.
Bilal

2 Son düzenleyen, ugurlu2001 (27.09.2010 09:05:04)

Re: Bir değişkenin içerisinde alt değerleri tutabilecek yapı nasıl kurulur

Selam Bilal;

Öncelikle VFP içerisinde "TFrameBitmapInfo" class ını bir şekilde tanımlaman gerekiyor. Eğer TFrameBitmapInfo class ı sistemde register edilmemişse DLL ini bir şekilde register etmelisin.

Eğer DLL sistemde register edildiyse; yapman gereken sadece şu :

Visual Fox Pro
Public oTFrameBitmapInfo 

Local lcBitmapDC As String &&  Yada senin değişken tipin neyse
oTFrameBitmapInfo = CreateObject(" oTFrameBitmapInfo ")
 
lcBitmapDC =  oTFrameBitmapInfo.BitmapDC && Aslında buna hiç ihtiyacın yok. Ne zaman istersen "oTFrameBitmapInfo.BitmapDC" emrinde

VFP menüsündeki object browser penceresinden de bahsettiğin "TFrameBitmapInfo" nesnesinin VFP içerisinde tanımlanabileceği hakkında bilgi alabilirsin :

- VFP menüsündeki "Object Browser" kutucuğuna tıkla
- Açılan "object browser" penceresinin sol üstünde bulunan "open type library" kutucuğuna tıkla
- Açılan "open" dialog formundaki "COM Libraries" sekmesini tıkla
- Eğer tanımlamayı istediğin "NESNE" bu gördüğün liste içerisinde mevcutsa, "NAME" başlığı altındaki "Checkbox" ı seçilihale getir. Böylece o nesneye ait tüm detayları bir list box içerisinde görmen mümkün

Ve VFP içerisinden bu nesneyi kullanabilirsin.

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

3

Re: Bir değişkenin içerisinde alt değerleri tutabilecek yapı nasıl kurulur

vfp'de type tanımlama şansın yok.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

4

Re: Bir değişkenin içerisinde alt değerleri tutabilecek yapı nasıl kurulur

Uğur hocam teşekkürler yazdıklarını deneyeceğim. sonucunu yazarım.

5 Son düzenleyen, ugurlu2001 (27.09.2010 14:24:37)

Re: Bir değişkenin içerisinde alt değerleri tutabilecek yapı nasıl kurulur

Bilal;

Ben sorduğun nesnenin harci bir  bir DLL 'e bağlı olduğunu varsaydım.  Ama Metin bir şey "olmaz" diyorsa. Vakit harcamış olursun.

Birde BitmapDC dediğin nedir?

Tam olarak ne yapmak istediğini sorsan, belki bir çok fikir önerilebilir.

GDI+ ile bitmap resimler üzerinde aklına gelebilecek hemen her türlü işlemi yapabiliyorsun. İncelemeni öneririm.

http://vfpx.codeplex.com/releases/view/15083

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

6

Re: Bir değişkenin içerisinde alt değerleri tutabilecek yapı nasıl kurulur

estağfirullah o kadar da değil. onu çetin için söyleyebiliriz... smile

olmaz ama type kullanan dll dosyalarına da vfp ile erişip işini görebiliyorsun. bunun için başka yöntemler var vfp'de.

bir dll için yardım almıştım ben. ama nasıl yapılıyor filan hatırlamıyorum. dll'i de nerde kullandığımı hatırlamıyorum. hatırlasam gönderirdim kodları... sad

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

7 Son düzenleyen, metin (28.09.2010 09:32:34)

Re: Bir değişkenin içerisinde alt değerleri tutabilecek yapı nasıl kurulur

bu linkte bitmapinfo değerini elde etmenin yolu anlatılmış:

http://www.news2news.com/vfp/?example=475

google'da "vfp bitmapinfo" yazınca çıkan ilk link... roll

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

8

Re: Bir değişkenin içerisinde alt değerleri tutabilecek yapı nasıl kurulur

bildiğim kadarı ile gdi+ ile bmp işlemleri rahatlıkla yapılıyor.. codeplex de örnekleri var.. bence başka bir arayışa gerek olmayabilir..

9

Re: Bir değişkenin içerisinde alt değerleri tutabilecek yapı nasıl kurulur

tvvideograbber in video işleme ürünü üzerinde çalışıyorum.
Açtığınız bir videoyu pause ettiğinizde mouse ile üzerini çizebiliyorsunuz.
Sunumlarda oldukça işe yarıyor. Bunu yapabilmek için BitmapDC dğerine ulaşmak gerekiyor.

İlgilenenler için VB örnek kodları ile birlikte demo sürümü http://www.datastead.com adresinden bulabilirsiniz. Belki video ile uğraşan arkadaşlara örnek olur.

Mouse ile video üzerine çizgi çizmek tabi bu ocx üzerinde. Yapmak istediğim ve VB kodu olan ama fox a taşıyamadığım.
Teşekkürler.

10

Re: Bir değişkenin içerisinde alt değerleri tutabilecek yapı nasıl kurulur

VB'de long 4 byte integer (VB6). O yapiyi longlari 4, booleani 1 byte olacak sekilde string olarak yaratip kullanabilirsin. Asagida gerekli cevrim fonksiyonu var (aslinda VFP9'da artik bu fonksiyon gerekmiyor, Bintoc() kullanabilirsin)

Visual Fox Pro
Function N2S

Lparameters tnValue, tnSize
Local lcStr, ix
lcStr = ""
For ix=1  To tnSize
  lcStr = lcStr + Chr(tnValue % 256)
  tnValue = Int(tnValue/256)
Endfor
Return lcStr